PHP7 und PHP5 unter Debian Jessie parallel betreiben

Von | 13. November 2016

Die Vorteile von PHP7 muss ich nicht aufzählen, oder? Performance und Speicherverbrauch wurden optimiert. Leider bleibt ein wenig die Kompatibilität auf der Strecke. Aber hier sollte man wirklich überlegen solche Anwendungen zu ersetzen. Bis dahin kann man auch beide PHP-Versionen parallel betreiben. Zumindest wenn man nginx mit php-fpm nutzt.

Installation PHP7 – Vorbereitung

Die Installation ist recht schnell durchgeführt. Du kannst die Installation ohne Probleme im laufenden Betrieb durchführen. Lediglich ein reload vom nginx sorgt für eine winzige Unterbrechung.

Als erstes müssen wir das dotdeb-Repository hinzufügen:

echo 'deb http://packages.dotdeb.org jessie all' > /etc/apt/sources.list.d/dotdeb.list

dotdeb-Repository Key hinzufügen:

curl http://www.dotdeb.org/dotdeb.gpg | apt-key add -

apt update ausführen:

apt-get update

Jetzt ist ein guter Zeitpunkt sich ein Überblick verschaffen, welche PHP5-Pakete installiert sind:

dpkg --get-selections | grep php5

PHP7 installieren

Jetzt geht es los. Wir installieren alle notwendigen PHP7 Pakete. apt wird eventuell noch mehr Pakete vorschlagen. Das können wir in aller Regel einfach bestätigen.

PHP7 mit FPM installieren:

apt-get install php7.0 php7.0-cgi php7.0-curl php7.0-fpm php7.0-gd php7.0-mysql php7.0-json php7.0-mcrypt php7.0-readline php7.0-geoip php7.0-imagick php7.0-memcached	
php7.0-mbstring php7.0-xml

Die Pakete müsst ihr natürlich nach Bedarf auswählen, das hier sind meine Pakete für WordPress und Piwik.

neuer Socket für PHP7

php7-fpm bringt bereits ein Pool [www] mit. Hier wird auch gleich ein anderer Socket als bei php5 verwendet. Eine Änderung ist also gar nicht notwendig. Für eine bessere Übersicht, habe ich den Pool in www-php7 umbenannt.

/run/php/php7.0-fpm.sock

Damit unsere Webseiten jetzt auch den neuen Socket nutzen, müssen wir diesen noch in den vHosts von nginx ändern. Dazu suchen wir uns die alten Einträge von fastcgi_pass:

fastcgi_pass  unix:/var/php/php5-fpm.sock;

und ändern diese auf:

fastcgi_pass  unix:/run/php/php7.0-fpm.sock;

Ich habe für verschiedene Seiten eigene Pools eingerichtet. Das müsst ich natürlich anpassen.
Die PHP-Konfiguration hat bei mir Out-of-the-Box funktioniert. Hier sollte es also keine Überraschungen geben.
Eventuell sollte das upload_limit erhöht werden. Das steht standardmäßig auf 2MB.

der Pfad zur php.ini hat sich natürlich auch geändert. Neu ist diese unter /etc/php/php.ini zu finden.

Seiten welche weiterhin php5 nutzen sollen, lasst ihr hier unberührt.

memcached

Memcached läuft ohne weitere Anpassung. War aber so auch zu erwarten.

xcache

xcache ist für PHP7 nicht verfügbar. Scheint aber auch nicht mehr notwendig. Der Zend OpCache ist defaultmäßig aktive.