Ubuntu 18.04 Server: Wie man PHP sicher aktualisiert
Um PHP auf die neueste Version auf Ubuntu 18.04 Server zu ändern, überprüfen Sie zuerst die Unterstützung und Kompatibilität des Betriebssystems und der Anwendungen, testen Sie dann das neue PHP auf einem unterstützten Ubuntu-Server, bevor Sie wechseln. Einfach externe Repositories hinzuzufügen und ein vollständiges Paket-Upgrade durchzuführen, wie in der Vergangenheit, garantiert weder die gewünschte PHP-Version noch, dass der Webserver sie verwendet.
Punkte, die zuerst auf Ubuntu 18.04 überprüft werden sollten
Die allgemeine Sicherheitswartung für Ubuntu 18.04 LTS endete im Mai 2023. Die erweiterte Sicherheitswartung (ESM) von Ubuntu Pro bietet zusätzliche Sicherheitspatches für anwendbare Pakete, bedeutet jedoch nicht, dass alle externen Repositories oder alle PHP-Versionen unterstützt werden. Überprüfen Sie den Unterstützungszeitraum von Ubuntu 18.04 und den Umfang Ihres aktuellen Abonnements und Ihrer Pakete.
Sie sollten zwischen den vom PHP-Projekt unterstützten Versionen und den Paketen unterscheiden, für die die Distribution Sicherheitsupdates bereitstellt. Selbst wenn die Versionsnummern der Ubuntu-Pakete gleich bleiben, können Sicherheitskorrekturen angewendet werden, während externe Pakete nicht automatisch Ubuntu Pro-Garantien erhalten. Überprüfen Sie sowohl die offiziell unterstützten PHP-Versionen als auch die Richtlinie des Paket-Anbieters.
Langfristig wird empfohlen, auf einem neuen Server eine unterstützte Ubuntu-LTS zu installieren und den Dienst zu migrieren. Wenn Sie den bestehenden Server vor Ort aktualisieren, können Sie LTS-Versionen nicht überspringen, daher müssen Sie zuerst von 18.04 auf 20.04 wechseln und dann in der Reihenfolge fortfahren. Detaillierte Schritte finden Sie im Ubuntu Server Upgrade Guide.
Überprüfen Sie die aktuelle PHP- und Webserver-Konfiguration
Bevor Sie den Produktionsserver ändern, notieren Sie die Version der Befehlszeilenschnittstelle (CLI), die geladenen Erweiterungen und die installierten Pakete. Die folgenden Befehle rufen Informationen ab, aber einige Befehle können fehlschlagen, wenn PHP nicht installiert ist.
lsb_release -a
php -v
php --ini
php -m
dpkg -l 'php*' | grep '^ii'
apt-cache policy php
php -v ist die CLI-Version. Die Version und Einstellungen des Apache-Moduls oder PHP-FPM (FastCGI Process Manager), das für Webanfragen verwendet wird, können unterschiedlich sein. In Apache prüfen Sie die aktiven Module mit apache2ctl -M, und in den Nginx- oder Apache-Site-Konfigurationen überprüfen Sie den Socket oder die Adresse, auf die FastCGI zeigt. Ob PHP-FPM verwendet wird, sollte zusammen mit der Serviceliste und den Webserver-Einstellungen überprüft werden.
systemctl list-units --type=service --all 'php*-fpm.service'
sudo apache2ctl -M
Auf Servern, die Apache nicht verwenden, ist es nicht nötig, den zweiten Befehl auszuführen. Sichern Sie die Konfigurationsdateien, Website-Dateien, Datenbanken und hochgeladenen Dateien und überprüfen Sie die Wiederherstellungsverfahren. Bewahren Sie Einstellungen, die Passwörter oder persönliche Informationen enthalten, sicher auf.
Auswahl einer neuen Version und Vorbereitung einer Testumgebung
- Überprüfen Sie, welche PHP-Versionen von der Anwendung, den Plugins und Abhängigkeiten unterstützt werden. Hauptversionsänderungen in PHP können inkompatibles Verhalten verursachen, daher sollten Sie den PHP-Migrationsleitfaden von der aktuellen Version zur Zielversion durchsehen.
- Wählen Sie eine unterstützte Ubuntu- und PHP-Kombination aus und bereiten Sie einen Testserver vor, der vom Produktionsumfeld getrennt ist. Verwenden Sie wiederherstellbare Backups und achten Sie darauf, die tatsächlichen Benutzerdaten zu schützen.
- Notieren Sie die erforderlichen PHP-Erweiterungen und suchen Sie nach Paketen, die für die neue Umgebung geeignet sind. Der Bedarf an Datenbanktreibern, Bildverarbeitung, XML, ZIP usw. hängt von der Anwendung ab.
- Überprüfen Sie auf dem Testserver Anmeldung, Datenbankverbindungen, Datei-Uploads, geplante Aufgaben und Hauptbildschirme und prüfen Sie die Fehlerprotokolle. Wenn Probleme auftreten, ändern Sie die Anwendung und Erweiterungen und testen Sie erneut.
Beispiel: Installation von PHP 8.3 auf einem Ubuntu 24.04-Testserver
Unten ist ein Beispiel für die Installation von PHP 8.3 CLI und PHP-FPM auf einem neuen Ubuntu 24.04 LTS Testserver, nicht Ubuntu 18.04. PHP 8.3 bedeutet nicht immer, dass es die neueste Version ist. Überprüfen Sie den Unterstützungszeitraum für die gewählte Ubuntu-Version und die PHP 8.3-Paketliste für Ubuntu 24.04, und fügen Sie nur die Erweiterungen hinzu, die Ihre App benötigt.
Überprüfen Sie zuerst die Paketkandidaten und den Änderungsplan. Wenn es keine Kandidaten gibt oder die Entfernen-/Änderungsliste anders als erwartet ist, installieren Sie nicht und überprüfen Sie das Repository und die Abhängigkeiten.
sudo apt update
apt-cache policy php8.3-cli php8.3-fpm
apt-get -s install php8.3-cli php8.3-fpm
Wenn die Ergebnisse auf dem Testserver angemessen sind, installieren Sie und überprüfen Sie den Status. Der unten stehende Befehl konfiguriert den Webserver nicht automatisch, um PHP-FPM zu verwenden.
sudo apt install php8.3-cli php8.3-fpm
php8.3 -v
php8.3 -m
systemctl status php8.3-fpm --no-pager
Zum Beispiel, wenn eine App MySQL- oder MariaDB-Verbindungen benötigt, überprüfen Sie php8.3-mysql separat in dieser Umgebung. Da Konfigurationsdateien und Erweiterungen zwischen CLI und FPM unterschiedlich sein können, prüfen Sie die Einstellungen und Dienste des neuen FPM. Nach der Installation des Pakets passen Sie die FastCGI-Einstellungen des Webservers an, um mit dem FPM-Socket des Testservers übereinzustimmen, und nachdem die Überprüfung der Webserver-Konfiguration bestanden ist, laden Sie ihn neu. Die Methode mit dem Apache-Modul wird separat konfiguriert und sollte nicht mit FPM verwechselt werden.
Überprüfen Sie die Webkonfiguration und beheben Sie Probleme
Sie können die PHP-Version einer Website nicht nur mit der CLI-Version überprüfen. Überprüfen Sie die aktiven Einstellungen des Webservers zusammen mit FPM-Diensten und Protokollen, und bestätigen Sie in einer eingeschränkten Testumgebung über die Statusseite der Anwendung oder Verwaltungstools, ob Webanfragen die neue PHP-Version verwenden. Lassen Sie keine phpinfo()-Seite an einem öffentlich zugänglichen Ort, die detaillierte Servereinstellungen offenlegt, stehen.
Planen Sie vor der eigentlichen Umstellung ein Wartungsfenster, die Datensynchronisation und Wiederherstellungspunkte. Überprüfen Sie nach dem Wechsel der Dienste die wichtigsten Funktionen sowie die Webserver- und PHP-Fehlerprotokolle. Treten Probleme auf, stellen Sie die zuvor gespeicherten Webserver-Verbindungseinstellungen wieder her, führen Sie Konfigurationsprüfungen durch und laden Sie diese neu oder leiten Sie den Datenverkehr zurück auf den Server vor der Umstellung. Wenn sich die Datenbankstruktur geändert hat, kann das einfache Zurücksetzen der PHP-Version die Funktionalität möglicherweise nicht wiederherstellen, daher sollten Sicherungs- und Datenwiederherstellungspläne gemeinsam eingesetzt werden.
Seien Sie vorsichtig mit externen Repositorien und vollständigen Upgrades
Die vorherige Methode in diesem Artikel fügte ppa:ondrej/php hinzu und führte apt-get upgrade aus. Ob externe Repositorien derzeit Ubuntu 18.04 und die gewünschte PHP-Version unterstützen, wird vom Anbieter bestimmt, und das einfache Hinzufügen eines Repositoriums garantiert nicht die Sicherheitswartung. apt-get upgrade betrifft nicht nur PHP, sondern auch andere Pakete, die aktualisiert werden können.
Bevor Sie Repositorien auf einem Produktionsserver hinzufügen oder entfernen, überprüfen Sie die Paketquellen, Abhängigkeiten, die sich ändern können, und Wiederherstellungsmethoden. Sie sollten auch prüfen, gesondert, wie der Webserver PHP verarbeitet, da das Aktivieren nur einer anderen Version des Apache-Moduls, während das alte PHP-Modul unverändert bleibt, Konfigurationskonflikte verursachen kann.




