PHP7 neben PHP5 unter Apache einsetzen

Ich wollte bestimmte Virtual Hosts mit neueren PHP Versionen laufen lassen, um den Geschwindigkeitsvorteil von PHP7 messen zu können. Tests mit TYPO3 7.6 haben eine Beschleunigung des Frontends ca. um den Faktor 1,4 ergeben. Das hängt natürlich immer von den Inhalten ab. Weil man bei den meisten Linux Distributionen nicht mehrere PHP Versionen gleichzeitig installieren kann, muss man sich selbst behelfen und PHP7 entsprechend kompilieren und in der CGI Variante neben PHP5 laufen lassen. Dazu wie folgt vorgehen:

  1. PHP Sourcen von php.net herunterladen und irgendwo entpacken
  2. ./configure Befehl im entpackten Ordner ausführen und notwendige devel-Pakete (je nach Distribution) installieren.
    Um TYPO3 und Magento 2 zufrieden zu stellen, musste ich folgende Einstellungen verwenden um alle nötigen Extensions zu aktivieren:

    ./configure --prefix=/opt/php-7.0.0 --with-config-file-path=/etc/php7 --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-mysql-sock=/var/run/mysql/mysql.sock --with-openssl --with-gd --enable-soap --with-zlib --with-freetype-dir=/usr/lib/ --enable-mbstring --with-zlib-dir=/usr/lib/ --with-gettext --enable-json --with-bz2 --enable-zip --with-jpeg-dir=/usr/lib/ --enable-cgi --with-mcrypt --enable-intl --with-curl --enable-opcache --with-config-file-scan-dir=/etc/php7/conf.d --with-pear=/usr/share/php7/PEAR/

    Die Pfade müssen je nach Distribution angepasst werden. Beispielsweise liegt die mysql sock nicht immer in /var/run/mysql.

  3. Der prefix macht deutlich, dass ich PHP nach /opt/php-7.0.0/ später installieren möchte.
    Wenn configure durchläuft make und danach sudo make install ausführen.
  4. Eine php.ini-* aus dem entpackten Verzeichnis nach /etc/php7/ kopieren und in php.ini umbenennen.
  5. Nun muss die Apache Konfiguration angepasst werden. Hierfür habe ich zunächst eine php7.conf im /etc/apache2/conf.d/ Ordner angelegt:
    <Directory "/opt/php-7.0.0/bin">
      Require all granted
    </Directory>
    Action application/x-httpd-php7 /php7-bin/php-cgi
    ScriptAlias /php7-bin /opt/php-7.0.0/bin
  6. Jetzt noch in dem Virtual Host Eintrag den Handler auf php7 ändern:
    <FilesMatch "\.ph(p[345]?|tml)$">
      SetHandler none 
    </FilesMatch>
    AddHandler application/x-httpd-php7 php
  7. Server neu starten
  8. Es kann sein, dass im Falle von TYPO3 man noch ein paar Anpassungen im Code bzw. an den Extensions vornehmen muss. Einige Warnungen kann man mit den richtigen Einstellungen im Install-Tool unterdrücken.

Sven Wappler

Webentwickler, TYPO3ler, Hobby-Fotograf

Das könnte Dich auch interessieren …

2 Antworten

  1. sonja sagt:

    Vielen Dank für die Anleitung! Allerdings sollte der Abschnitt mit den ./configure Anweisungen anders formatiert werden: Der — wird als ein – dargestellt…

  2. Sven Wappler sagt:

    Ja, danke für den Hinweis, habe es umformatiert.

Schreibe einen Kommentar