Umstellung auf PHP7

Diesen Beitrag schrieb ich 8 Jahre und 7 Monate zuvor; die nachfolgenden Ausführungen müssen heute weder genau so nach wie vor funktionieren, noch meiner heutigen Meinung entsprechen. Behalte das beim Lesen (und vor allem: beim Nachmachen!) bitte stets im Hinterkopf.

Geschätzte Lesezeit: 2 Minuten

Mein VPS läuft unter Ubuntu-14.04 LTS; das in den Paketquellen enthaltene PHP ist Version 5.5.9. Der aktive Support for PHP5.5 endete bereits vor acht Monaten, und Security-Updates gibt es noch bis zum 10. Juli 2016 – also drei Monate. Und der aktive Support für PHP5.6 endet am 31. Dezember diesen Jahres – auch keine Ewigkeit mehr. Zeit also für PHP7…

PHP7 Supported Versions Da ich nur bedingt Freund von externen PPA-Quellen bin, habe ich selbst den Compiler angeworfen; kein Hexenwerk. In Abhängigkeit dessen, was du einkompilieren möchtest musst du lediglich dafür sorgen, dass alle Abhängigkeiten installiert sind – insbesondere die dev-Pakete. Auf der Download-Seite suchst du dir den passenden Mirror aus und lädst dir die aktuelle Stable – das ist die 7.0.4 – herunter und entpackst sie in /usr/src:

$ cd /usr/src
$ tar xvfj php-7.0.4.tar.bz2
$ cd php-7.0.4

Nun kann PHP7 konfiguriert und anschließend kompiliert werden; gegebenenfalls musst du die Optionen an deine Belange anpassen, in zeige hier lediglich, was für mich ganz gut funktioniert ;-) Selbst gebaute Software landet bei mir in /opt/local (weshalb der Inhalt meiner /etc/environment PATH="/opt/local/bin:/opt/local/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games" lautet). Das PHP5 aus den Ubuntu-Paketquellen lasse ich parallel vorerst im System – für den Fall, dass ich wieder umswitchen muss; damit rechne ich aber nicht wirklich, denn jegliche Software, die unter PHP5.5 läuft, sollte auch unter PHP7 problemlos funktionieren. Mal sehen…

$ ./configure \
--prefix=/opt/local/ \
--with-libdir=lib/x86_64-linux-gnu/ \
--enable-fpm \
--with-fpm-user=www-data \
--with-fpm-group=www-data \
--enable-libxml \
--enable-session \
--with-pcre-regex=/usr \
--enable-xml \
--enable-simplexml \
--enable-filter \
--disable-debug \
--enable-inline-optimization \
--disable-rpath \
--disable-static \
--enable-shared \
--with-pic \
--with-gnu-ld \
--with-mysql-sock \
--with-gettext \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-xpm-dir \
--enable-exif \
--with-zlib \
--with-bz2 \
--with-curl \
--with-ldap \
--with-mysqli \
--with-freetype-dir \
--enable-soap \
--enable-sockets \
--enable-calendar \
--enable-ftp \
--enable-mbstring \
--enable-gd-native-ttf \
--enable-bcmath \
--enable-zip \
--with-pear \
--with-readline \
--with-openssl \
--with-imap \
--with-imap-ssl \
--with-kerberos \
--enable-phar \
--enable-pdo \
--with-pdo-mysql \
--with-mysqli

Der Vorgang nimmt eine Weile in Anspruch; anschließend kann PHP7 gebaut, getestet und final installiert werden:

$ make
$ make test
$ make install

Konfiguriere nun deinen Webserver so, dass er PHP7 lädt; ich nutze nginx und php-fpm, du musst gegebenenfalls an ganz anderen Stellschrauben drehen.

Fazit

Wäre es technisch möglich, könnte ich meinem VPS ein Downgrade verpassen – PHP7 benötigt deutlich weniger Ressourcen als der kleine Bruder (hätte ich mich da mal vor dem Upgrade des VPS drum gekümmert!). Und das bei gesteigerter Performance – wie Google’s PageSpeed Insights eindrucksvoll beweist. WordPress, OwnCloud, der ganze Krams, den ich so auf dem Server rumsausen lasse – alles funktioniert prima. Ein altes WordPress-Plugin musste ich abschalten – das lief schon unter PHP5.5 nur mit sehr viel Liebe und unterdrückten Warnungen, nach der Umstellung war dann halt ganz Schluß. Ist grundsätzlich aber auch sehr sinnvoll, regelmäßig Inventur zu machen, sich von Ballast zu befreien und alte Zöpfe abzuschneiden – in jeder Hinsicht :-)

Alle Bilder dieser Seite: © Marianne Spiller – Alle Rechte vorbehalten
Hintergrundbild: 1124x 569px, Bild genauer anschauen – © Marianne Spiller – Alle Rechte vorbehalten

Eure Gedanken zu „Umstellung auf PHP7“

Ich freue mich über jeden Kommentar, es sei denn, er ist blöd. Deshalb behalte ich mir auch vor, die richtig blöden kurzerhand wieder zu löschen. Die Kommentarfunktion ist über GitHub realisiert, weshalb ihr euch zunächst dort einloggen und „utterances“ bestätigen müsst. Die Kommentare selbst werden im Issue-Tracker und mit dem Label „✨💬✨ comment“ erfasst – jeder Blogartikel ist ein eigenes Issue. Über GitHub könnt ihr eure Kommentare somit jederzeit bearbeiten oder löschen.