Upgrade auf eine höhere PHP-Version (Debian / SuSE))

PHP als Code-Interpreter ist ein wesentlichen Faktor für die Ausführungsgeschwindigkeit von Webseiten oder im Web betriebenen Applikationen. Deshalb ist es wichtig die schnellste Interpretervariante installiert zu haben, wenn das entsprechende Portal zunehmende Besucherzahlen verzeichnet. Die Kontrolle darüber läßt sich gut mit einem installierten Piwik behalten.

Zur Kontrolle erst einmal eine phpinfo Datei erzeugen und die vermutlich bereits installierte Version auslesen. Also in der www root eine Datei namens phpinfo.php anlegen, die dann ganze drei Zeilen Code beinhaltet. Dazu in die Dokumenten root wechseln die in Debian unter
/var/www/html
zu finden ist.

Den präferierten Editor aufrufen und die drei Zeilen eintragen:
<?php
phpinfo();
?>
dann speichern und aus dem Editor raus. Ruft man nun den Webserver über einen Browser auf, z.B. mit
localhost/phpinfo.php
dann erscheint ein Datenblatt mit allen Informationen über die installierte PHP-Version. Da hier Dinge drinstehen, die sicherheitsrelevant sind, ist die Datei umgehend nach Abschluß der Installationen vollständig zu löschen.

Sollte keine Seite mit Konfigurationsdaten auftauchen, kann es sein, daß kein PHP installiert ist. Dies läßt sich mit php -v prüfen. Ist das Kommando nicht bekannt, läuft Ihr Linux ohne PHP und es muß nachinstalliert werden (siehe unten).

Um alles bereits installierte auch nach der Aktualisierung von PHP noch lauffähig zu haben, sollte nachgesehen werden, welche Bibliotheken und Module bereits bei der alten Version installiert sind. Fehlendes läßt sich dann gleich mit installieren. Mit dem Packetmanager gelingt das mit dem Befehl
dpkg – –get-selections | grep php5

Dann kann die neue Version installiert werden. Bei mir war das php7.0 .

apt-get install php7.0 libapache2-mod-php7.0 php7.0-apcu php7.0-curl php7.0-xml php7.0-zip php7.0-mbstring php7.0-gd php7.0-mysql

Passiert ist am Portal nun aber noch nichts. Es läuft immer noch mit der alten Version. Wer das ausprobieren will, kann die phpinfo.php noch einmal aufrufen.

Sollten Sie Änderungen in der Initialisierungsdatei php.ini von php vorgenommen haben, retten Sie diese Änderungen, um sie in die neue ini zu übernehmen.

Erst das Umschalten von der alten auf die neue Version von php bringt den gewünschten Erfolg. Dafür sind einige Vorbereitungen zu treffen, weil es schnell gehen muß, da in der Zeit, in der keine php Version aktiv ist, liefert der Webserver die phpinfo Datei zuück und da dort die gesamte Konfiguration aufgelistet ist und auch noch Paßwörter im Klartext geliefert werden, sollte das unterbunden werden. Entweder vor dem Umschalten den Webserver ausschalten, er muß danach eh neu gestartet werden oder sich beim Umschalten beeilen und keine Fehler begehen : – )

Die Umschaltung geschieht mit den Kommandos
a2dismod php5
a2enmod php7.0
service apache2 restart

Sollte sich jemand nicht zutrauen, das am “offenen Herzen” zu probieren, dann sieht das so aus:
service apache2 stop
a2dismod php5
a2enmod php7.0
service apache2 start

Mit localhost/phpinfo.php überprüfen, ob nun die neue Version läuft und vor allem das Portal aufrufen und die Seiten durchsehen, ob auch jetzt noch alles funktioniert.

Sollten Fehler aufgetreten sein, sind die im apache2.log und im Fehlerjournal von systemd zu suchen.

____________________

SUSE Leap 42.3

Das Upgrade unter SUSE Leap 42.3 geht etwas leichter vonstatten.
Mit Yast2 läßt sich graphisch auflisten welche php Version installiert ist, eine Deinstallation mit Yast2 schlug bei mir durch Abwählen der markierten Dateien fehl. Da nicht jeder genau weiß, welche Dateien und Bibliotheken gebraucht werden und diese entsprechend auswählen kann, ist es leichter, die Installation über die Kommandozeile vorzunehmen.
Also ein Terminalfenster öffnen und auf der Kommandozeile mit php -v prüfen welche Version installiert ist. Momentan dürfte es beim PHP Upgrade darum gehen von PHP5 auf PHP7 zu migrieren, weshalb das auch hier im Beispiel verwendet wird.
Deinstallieren der gefundenen Version mit dem Kommando
zypper rm php5
Wer jetzt noch einmal versucht php -v aufzurufen bekommt eine Fehlermeldung, was nicht sonderlich überrascht.
Anders als bei Debian ist in den rpm Paketen von SUSE die einfache Angabe von php7 ausreichend. Also läßt sich die Installation mit
zypper in php7
problemlos starten und alle grundsätzlich benötigten Dateien und Bibliotheken werden automatisch installiert. Die Überprüfung mit php -v bestätigt dann die ordnungsgemäße Installation. I.d.R. wird es eine niedrigere Version sein, als die neueste veröffentlichte PHP-Version (obwohl php7.2 bereits veröffentlich ist, wird noch php7.0.7-31.1 installiert). Aber das ist wohl möglicherweise aus Stabilitätsgründen so.

… und nicht vergessen systemctl restart apache2.
Oder nginx je nachdem was als Webserver installiert ist.

Viel Erfolg