Im Laufe der Zeit kann es vorkommen, dass manche Dienste oder Webseiten/Plugins auf älteren PHP Versionen nicht mehr korrekt funktionieren und eine aktuelle PHP Version benötigen. In den Paketquellen der genutzten Distribution ist eine aktuelle PHP Version oft leider nicht zu finden. In diesem Fall kann eine aktuelle PHP Version direkt aus dem PHP Repository installiert werden. Welche PHP Version aktuell installiert ist, wird mit dem Befehl php -v angezeigt
1.0 Aktuelle Konfiguration sichern
Als Erstes empfiehlt es sich die aktuelle PHP Konfiguration zu sichern:
1 2 3 4 5 |
PHP_BckDir="$HOME/PHP_bck_$(date +%F-%H%M%S)" mkdir $PHP_BckDir sudo cp -r /etc/php* $PHP_BckDir sudo apt list --installed | grep php- | cut -d "/" -f1 > $PHP_BckDir/PHP_packages_installed.lst sudo apachectl -M > $PHP_BckDir/apache_modules |
2.0 PHP Repository einrichten
2.1 Im Falle einer Neuinstallation sollten vor der PHP Installation folgende Pakete installiert werden :
1 |
sudo apt install ca-certificates apt-transport-https software-properties-common curl lsb-release -y |
2.2.1 PHP Repository im System registrieren und einrichten (Skript) :
1 |
curl -sSL https://packages.sury.org/php/README.txt | sudo bash -x |
2.2.2 PHP Repository im System registrieren und einrichten (Manuell) :
1 2 3 |
sudo wget https://packages.sury.org/php/apt.gpg -O /etc/apt/trusted.gpg.d/php-sury.gpg echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php-sury.list sudo apt update |
3.0 Aktuellste PHP Version installieren
Nachdem das PHP Repository eingerichtet wurde, werden die aktuellen PHP Pakete über ein einfaches Upgrade installiert
1 2 |
sudo apt update sudo apt upgrade |
Mit den o.g. Befehlen wird allerdings die aktuellste PHP Version. Das wiederum kann ebenfalls zu Problemen führen, wenn Webseiten oder PHP Anwendungen noch nicht für die neuste PHP Version freigegeben wurden. So funktioniert beispielsweise die aktuelle Nextcloud Version 25.0.05 nicht mit der aktuellen PHP Version 8.2.
3.1 Bestimmte PHP Version installieren
Wird wie in o.g. Fall eine andere PHP Version benötigt, muss diese manuell installiert und eingerichtet werden. Eine Liste der verfügbaren PHP Versionen kann wie folgt aufgerufen werden:
1 2 |
apt update apt search php | grep ^php[[:digit:]].[[:digit:]]/ | cut -d "/" -f1 |
Aktuell sind die PHP Versionen 5.6 / 7.0 / 7.1 / 7.2 / 7.3 / 7.4 / 8.0 / 8.1 / 8.2 verfügbar. PHP 8.2 wird, wie bereits beschrieben, noch nicht von allen PHP Anwendungen unterstützt, während PHP 5.6 – 7.3 kaum noch genutzt wird. Eine PHP 5.6 Installation, falls diese benötigt wird, ist ebenfalls möglich. Es können auch alle PHP Versionen parallel installiert werden. Eine Aktualisierung von PHP 8.1 auf 7.4 incl. der installierten und aktiven Module funktioniert wie folgt:
1 2 3 4 |
PHPVersionOld=7.4 PHPVersionNew=8.1 PHPObsoletPakages="php8.1-json" apt install -y $(cat PHP_packages_installed.lst | grep php[[:digit:]].[[:digit:]] | sed 's/'$PHPVersionOld'/'$PHPVersionNew'/' | egrep -v $(echo $PHPObsoletPakages | sed 's/ /\|\//g')) |
4.0 PHP Konfiguration
Für jede Webseite/Anwendung kann eine bestimmte PHP Version mit entsprechender Konfiguration genutzt werden. Ist beispielsweise die PHP Version 8.2 installiert, es wird aber für eine Webseite/Anwendung PHP Version 8.1 benötigt, kann entweder die Webseite/Anwendung explizit für die Nutzung von PHP 8.1 konfiguriert werden oder alternativ kann die Servervorgabe von 8.2 auf 8.1 geändert werden.
4.1 Systemvorgabe umstellen:
1 2 |
update-alternatives --config php update-alternatives --config php-cgi |
4.2 Servervorgabe umstellen:
1 2 3 4 |
sudo a2dismod php7.4 service php8.1-fpm restart service apache2 restart |
by Speefak | www.sebae.net | www.karl-deutsch.at | kofler.info | https://legacy.thomas-leister.de | www.mva.ch