Howto: Aktualisierung von PHP 7.x auf PHP 8.x unter Ubuntu/ Debian
- Aktualisiert: Freitag, 03. März 2023 13:10
- Geschrieben von Mazin Shanyoor
Das Installieren einer aktuellen PHP-Version auf einem Linux-Server erfordert immer ein paar Handgriffe, aber insgesamt ist es ein unproblematischer Prozess, der gut dokumentiert und erprobt ist. Ein Upgrade von PHP 7.x auf PHP 8.x bedingt nicht nur ein Upgrade des PHP-Kerns, sondern auch aller Erweiterungen (PHP-Pakete).
Aber keine Sorge, dieses ist wahrlich keine Raketentechnologie. Der erste Schritt ist immer, sich am Anfang erst mal einen Überblick über die installierten PHP-Versionen und Pakete zu verschaffen.
Das Howto des PHP-Upgrades gilt auch für andere PHP-Aktualisierungen und Wechsel
Die hier vorgestellten Schritte gelten im Übrigen auch für alle PHP-Upgrade-Prozesse, egal ob es sich dabei um ein Minor- oder Major-Release-Upgrade handelt.
Analysieren
Listing 1: Welche PHP-Version ist überhaupt installiert
php -v
Leider ist das Ergebnis in unserem Fall uneindeutig. Es sind mehrer PHP-Versionen auf unserem Linux-Server installiert und es stellt sich nun die Frage, welche dieser Versionen wird aktuell für unseren PHP-Webapplikationen benutzt. Am besten es wird hier ein kleines PHP-Script geschrieben, um die Information mithilfe der PHP-Funktion phpinfo () zu erhalten.
Listing 2: Ermittlung der aktiven Web-PHP-Version mittels eines phpinfo()-Scripts
<?php
phpinfo();
?>
Das Script wird im Doc-Root installiert und anschließend einfach im Browser aufgerufen. Aus Sicherheitsgründen sollte die Script-Datei anschließend wieder entfernt oder der Datei die Ausführungsrechte entzogen werden (chmod 000 phpinfo.php) werden, da es sehr viel Informationen über den Web-Server und dessen Module verrät.
Zum Schluss der kleinen Analyse lassen wir uns alle installierte PHP-Erweiterung in eine Textdatei (php_erweiterungen.txt) schreiben und bekommen so einen Überblick über PHP-Spracherweiterungen einschließlich der Versionsnummern.
Listing 3: Installierte PHP-Erweiterungen und Module
dpkg -l | grep php | tee php_erweiterungen.txt
Installation der neuen PHP-Version
Hinzufügen von Ondřej Surý PPA Repository zum herunterladen der aktuellen PHP-Pakete. Die Trennung der Ubuntu-Updates von der PHP-Version macht sehr viel Sinn, da nicht alle PHP-Applikationen auf der neusten PHP-version lauffähig sind.
Listing 4: Hinzufügen des Repository von Ondřej Surý
apt install software-properties-common
add-apt-repository ppa:ondrej/php
apt update
Ab Ubuntu 22.04 und höher müssen dieses Repository nicht mehr hinzufügt werden.
Listing 5: Installion der neuen PHP-Version
apt install php8.1
PHP-Erweiterungen installieren
Für die neue PHP-Version (in unserem beispiel PHP 8.1) werden nun einige häufig verwendete PHP-Erweiterungen mit "apt install" implementiert.
Listing 5: Installation von PHP-Erweiterungen mittels apt install
apt install php8.1-common php8.1-mysql php8.1-xml php8.1-xmlrpc php8.1-curl php8.1-gd php8.1-imagick php8.1-cli php8.1-dev php8.1-imap php8.1-mbstring php8.1-opcache php8.1-soap php8.1-zip php8.1-intl -y
Aktivieren der neuen PHP-Version für den Apache2
Nun muss dem Apache mitgeteilt werden, dass er die neu installierte Version von PHP 8.1 verwenden soll. Vorher muss allerdings die alte PHP-Version deaktiviert werden (hier im Beispiel PHP 7.4).
Deaktivieren der alten PHP-Version 7.4, aktivieren der neuen PHP-Version 8.1 via a2dismod und a2enmod
Listing: 2dismod – a2enmod
Deaktivieren der alten PHP-Version
a2dismod php7.4
Aktivieren der neuen PHP-Version
a2enmod php8.1
Restart des Apache
systemctl restart apache2