PHP 7.2 ist erschienen, und ich möchte von PHP 7.1 auf meinem Ubuntu-Server auf PHP 7.2 upgraden. Wer noch PHP 7.0 besitzt, kann diese Anleitung auch benutzen und ersetzt die 1 durch eine 0 (Null).

1. PPA hinzufügen ondrej/php

Ich verbinde mich mit Ondřej Surýs fantastischem Repository. Es verfügt bereits über PHP 7.2. Ich füge das PPA hinzu und aktualisiere die Paketinformationen.

sudo add-apt-repository ppa:ondrej/php
sudo apt update
2. Aktuelle PHP-Pakete

Folgendes braucht nur beachten, wer von einer früheren PHP-Version upgradet. Für eine PHP-Neuinstallation ist dieser Schritt überflüssig. Ich notiere mir die aktuellen PHP-Pakete, die sich derzeit auf meinem Server befinden, damit ich sie für PHP 7.2 neu installieren kann:

dpkg -l | grep php | tee mypackages.txt

Dies speichert meine aktuellen Pakete in der Datei mypackages.txt in dem Verzeichnis, in dem ich mich gerade befinde.

3. PHP 7.2 installieren

Nun installiere ich PHP 7.2:

sudo apt install php7.2 php7.2-common php7.2-cli libapache2-mod-php7.2

Zu beachten ist (!): Es gibt zwei verschiedene Pakete für die Webserver-Integration. Wer Apache2 mit prefork MPM verwendet, muss libapache2-mod-php7.2 anstelle von php7.2-fpm installieren. Um festzustellen, welche Version bei mir installiert ist, gebe ich ein:

sudo apachectl -V

Mir wird u.a. „Server MPM: prefork“ angezeigt, sodass ich das entsprechende Paket installiere.

4. Zusätzliche Pakete installieren

Ich öffne die Datei mypackages.txt, die ich in Schritt 2 erstellt habe und installiere diese zusätzlichen PHP-Pakete. Die mypackages.txt-Datei zeigt mir z.B. Pakete wie php7.1-mbstring an, und ich installiere die entsprechende Version für PHP 7.2: php7.2-mbstring und so weiter.

5. Webserver-Konfiguration

Apache mit php-fpm
Bevor ich die alten PHP-Pakete entferne, vergewissere ich mich, dass der Webserver die PHP 7.2 Module korrekt verwendet. Bei php7.2-fpm wird die bestehende FPM-Konfiguration mit a2disconf php7.1-fpm deaktiviert (aktivieren mit a2enconf php7.1 bzw. a2enconf php7.2).

Apache mit libapache2-mod_php
libapache2-mod_php7.1 wird mit a2dismod php7.1 deaktiviert und das neue PHP 7.2-Modul mit a2enmod php7.2 aktiviert.

6. Webseiten überprüfen

Auch wenn alles anscheinend ohne Fehlermeldung installiert worden ist, sollte man dennoch seine Webseiten, die auf dem Server laufen, aufrufen und überprüfen. Bei mir ließ sich eine Webseite nicht mehr aufrufen, obwohl ich meinte, php7.2-zip installiert zu haben. Nach erneuter Installation lief alles wieder.

7. Alte Versionen entfernen

Wenn alles gut funktioniert überprüfe ich auch noch mit phpinfo() und php –info, ob alle Angaben stimmen. Anschließend entferne ich die alten Pakete:

sudo apt purge php7.1