Finales PHP 7 unter Ubuntu 14.04 LTS als php-fpm Variante testen.

Mit einiger Verzögerung wurde heute am 3. Dezember die finale Version 7.0.0 von PHP veröffentlicht. Eigentlich hätte dies nämlich schon im Oktober geschehen sollen. Offizielle Pakete wird es bei den Linux Distributionen noch nicht so bald geben aber selbst compiliert als php-fpm Modul, lässt sich PHP 7 relativ einfach testen.

PHP 7 ist generell schneller und in vielen Bereich weniger speicherhungrig als noch PHP 5. Dazu gekommen sind einige neue Features wie  Typehints für Rückgabewerte sowie die strikte Behandlung der selben. Einen ternärer Operator der auch auf prüft ob die Variable überhaupt existiert:

Dann gibt es noch den ominösen Spaceship Operator <=> Der zwei Werte vergleicht und je nach dem -1, 0 oder 1 ausgiebt. Dazu noch anonyme Klassen und vieles mehr.

Wer einen Überblick erhalten möchte welche Neuerungen PHP 7 mit sich bringt findet eine anschauliche Auflistung auf der Zend-Homepage: Coolest PHP 7 Features

1. Download des Sourcecodes

Den Sourcecode erhält man aus dem offiziellen Git Repository.

Damit haben wir den Sourcecode heruntergeladen entpackt und sind in das neue Verzeichnis gewechselt.

2. Konfiguration

Um die wichtigsten Bibliotheken zu installieren können wir folgende Kommandos verwenden. Je nach bedarf können hier weitere hinzugefügt werden um diese später mit –enable-featurexzy zu aktivieren.

Weil einige Scripte im Git PHP 7 Sourcecode fehlen erstellen wir diese nun:

Danach konfigurieren wir den Sourcecode

Mögliche Probleme

Fehler: configure: error: Unable to locate gmp.h

Lösung: Symbolischen link erstellen.

3. Kompilieren

Dass kann nun etwas dauern. Gab es keine Probleme beim Kompilieren installieren wir PHP 7 unter der Verwendung des Tools Checkinstall. Damit erhält man ein Debian/Ubuntu Paket dass man bei Bedarf auch wieder komplett deinstallieren kann.

Checkinstall fragt bei Erfolg nach eine Beschreibung und lässt uns Paketname und Maintainer eintragen. Als Paketname verwenden wir php7 damit wir nicht in Konflikt mit anderen PHP Versionen geraten.

Danach wird eine .deb Datei erstellt und diese auch gleich installiert. Deinstallieren kann man PHP 7 dann ganz normal über:

Mögliche Probleme

Fehler: Hinweis man solle für pear.php.net –no-check-certificate verwenden.

Lösung: Kurzzeitig scheint die Domain pear.php.net auf eine falsche IP aufgelöst zu haben. Dies dürfte inzwischen behoben sein. Alternativ folgende parameter beim configure hinzufügen.

Pear lässt sich auch später manuell installieren.

4. Erste Tests

Der einfachste Test ist es das Command Line Tool von PHP aufzurufen.

Gibt die Versionsnummer PHP 7.0.0beta1 aus. Mit dem nächsten Befehl erhalten wir Informationen zu den installierten Modulen und Konfigurationsparametern.

5. Verwendung als FPM Modul mit Apache und fastcgi

Wir gehen davon aus das Apache installiert ist und bereits funktioniert. Zur Sicherheit prüfen wir dennoch ob alle notwändigen Pakete vorhanden sind und aktivieren das Actions Modul:

Als nächstes aktivieren wir die Konfiguration und starten php-fpm.

Damit haben wir in der www.conf die Benutzer und Gruppen nobody/nobody durch www-data/www-data ersetzt und php-fpm gestartet. Läuft schon ein php-fpm Server sollten die Werte für den Port ebenfalls angepasst werden. Statt www-data kann natürlich auch ein anderer Benutzer mit dessen Gruppe verwendet werden.

Nun fügen wir in den VirtualHost unserer Wahl folgende Zeile ein:

Statt /var/www müssen wir den tatsächlichen Pfad zum DocumentRoot angeben. Wenn wir nun den Apache neu starten sollte der VirtualHost PHP7 verwenden.

Initscript für unseren neuen php-fpm Server

Eventuell müssen die Ordner /opt/php7/var /opt/php7/var/log und /opt/php7/var/run noch manuell erstellt werden.

6. Verwendung unter NginX

Bei einem NginX Virtualhost (server { } Direktive) sollten folgende Zeilen zu finden sein.

Falls der Port in www.pool geändert wurde muß dieser hier ebenfalls geändert werden.

Kommentar verfassen