Projekt Webserver – Ubuntu 22.04 Teil 4 – mehrere PHP-Versionen installieren und nutzen

Für einige Fälle mag es notwendig sein eine bestimmte PHP-Version zu nutzen – sei es, dass eine Anwendung nicht mit der aktuellsten Version kompatibel ist oder wir einfach selbst die Kompatiblität von Themes oder Plugins mit anderen Versionen überprüfen wollen. Hierzu muss man dann die entsprechenden Versionen nachinstallieren.

Da jedoch standardmäßig nur eine Version, derzeit PHP 8.1, in Ubuntu enthalten ist müssen wir eine andere Paketquelle hinzufügen. Der einfachste Weg ist hier per PPA von Ondřej Surý.

sudo add-apt-repository ppa:ondrej/php

Das muss dann noch mit Enter bestätigt werden und abschließend laden wir die Paketquellen neu.

sudo apt-get update

Sollten wir uns doch wieder umentscheiden können wir die PPA hiermit wieder entfernen.

sudo add-apt-repository --remove ppa:ondrej/php

Verfügbare PHP-Versionen feststellen

Damit wir feststellen können welche PHP-Versionen uns von nun an zur Verfügung stehen prüfen wir das mal mit folgendem Befehl.

apt list php*

Alternativ auch mit

apt list -a php*

Wenn wir dann in Putty hochscrollen finden wir derzeit folgende Versionen: 5.6, 7.0, 7.1, 7.2, 7.3, 7.4, 8.0, 8.1, 8.2

Zusätzliche Versionen installieren

Die Version 8.1 haben wir ja hier bereits installiert. Für jede weitere Version die wir verwenden möchten installieren wir nun die erforderlichen Pakete nach folgendem Schema nach. [v] bedeutet hier die jeweilige Version.

sudo apt-get install php[v] libapache2-mod-php[v] php[v]-curl php[v]-fpm php[v]-gd php[v]-imagick php[v]-intl php[v]-json php[v]-mbstring php[v]-mysql php[v]-xml php[v]-zip

Als Beispiel hier für die Version 7.4

sudo apt-get install php7.4 libapache2-mod-php7.4 php7.4-curl php7.4-fpm php7.4-gd php7.4-imagick php7.4-intl php7.4-json php7.4-mbstring php7.4-mysql php7.4-xml php7.4-zip

Natürlich ist derzeit noch immer die Version 8.1 geladen. Diese müssen wir deaktivieren und die Version 7.4 aktivieren

sudo a2dismod php8.1
sudo a2enmod php7.4

Alternativ können wir bei a2dismod auch php* verwenden. Danach muss der Webserver Apache noch neugestartet werden.

sudo systemctl restart apache2

Wenn wir danach wieder unsere Datei info.php im Browser aufrufen können wir das überprüfen.

Für WordPress gilt im übrigen derzeit PHP in der Version 7.4 als Mindestanforderung.

eine bestimmte PHP-Version wieder entfernen

Sollten wir eine bestimmte PHP-Version nicht mehr benötigen können wir diese folgendermaßen wieder entfernen – zB hier für die Versionen 5.6, 7.0, 7.1, 7.2, 7.3.

sudo apt-get purge php5.6 php5.6-* php7.0 php7.0-* php7.1 php7.1-* php7.2 php7.2-* php7.3 php7.3-*

Mit update-alternatives --config php können wir uns das auch dann ansehen.

Vorher

Nachher

php.ini Einstellungen für alle PHP-Versionen

Tja wenn wir mehrere Versionen im Einsatz haben wäre es ziemlich unpraktisch dies für jede einzelne Version zu tun. Zum Glück haben wir in Teil 2 dieser Artikelserie die notwendigen Voraussetzungen geschaffen um dies auf einfachem Weg per .htaccess Datei zu tun.

Hierzu kopieren wir eine Datei mit dem Name .htaccess in das Verzeichis vor html -> /var/www mit folgendem Beispielinhalt

php_value memory_limit 512M
php_value post_max_size 256M
php_value upload_max_filesize 256M

Auf diese Weise ist die Bearbeitung der Datei php.ini wie in Teil 3 beschrieben nicht mehr notwendig. Diese Einstellungen werden von nun an für jede PHP-Version verwendet.

Somit wäre der Testwebserver fertig. Natürlich kann man das noch erweitern indem man zB Fail2ban einrichtet oder eine echte Domain aufschaltet. Dies funktioniert jedoch ohnehin nur bei einem Internetzugang mit fixer IP-Adresse.




Bitte beachten Sie, dass dieser Beitrag bereits vor über einem Jahr geschrieben wurde und unter umständen nicht mehr aktuell ist.