PHP Version wechseln: Mehrere PHP-Versionen parallel betreiben

Das parallele Betreiben mehrerer PHP-Versionen auf einem Server ermöglicht die Kompatibilität unterschiedlicher Webanwendungen, die verschiedene PHP-Versionen benötigen. Dies ist besonders relevant für Hosting-Umgebungen, in denen ältere Projekte nicht sofort auf die neueste PHP-Version migriert werden können. In diesem Leitfaden erfahren Einsteiger, IT-Studierende und Junior Network Engineers, wie PHP-Versionen installiert, konfiguriert und für Apache oder Nginx ausgewählt werden.

Voraussetzungen

  • Linux-Server (Ubuntu/Debian oder CentOS/RHEL)
  • Root- oder Sudo-Zugriff
  • Installierter Webserver: Apache oder Nginx
  • Grundkenntnisse im Umgang mit Paketmanagern und CLI

Verfügbare PHP-Versionen installieren

Auf Ubuntu/Debian-Systemen können mehrere PHP-Versionen über das ondrej/php PPA installiert werden.

sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt update

# Beispiel: PHP 7.4 und PHP 8.1 installieren
sudo apt install php7.4 php7.4-cli php7.4-fpm php7.4-mysql
sudo apt install php8.1 php8.1-cli php8.1-fpm php8.1-mysql

Unter CentOS/RHEL werden die Remi-Repositories genutzt:

sudo yum install epel-release yum-utils -y
sudo yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm
sudo yum-config-manager --enable remi-php74
sudo yum install php php-cli php-fpm php-mysqlnd
sudo yum-config-manager --enable remi-php81
sudo yum install php php-cli php-fpm php-mysqlnd

PHP-FPM für parallele Versionen

PHP-FPM ermöglicht, dass unterschiedliche PHP-Versionen parallel laufen und Webserver über Sockets oder Ports ansprechen.

PHP-FPM Pools prüfen

systemctl status php7.4-fpm
systemctl status php8.1-fpm

PHP-FPM aktivieren und starten

sudo systemctl enable php7.4-fpm
sudo systemctl start php7.4-fpm
sudo systemctl enable php8.1-fpm
sudo systemctl start php8.1-fpm

Apache mit mehreren PHP-Versionen

Apache nutzt das Modul mod_proxy_fcgi oder libphp zur Anbindung von PHP-FPM.

PHP-Version für eine Domain setzen (Apache VirtualHost)

sudo nano /etc/apache2/sites-available/meinedomain.conf
<VirtualHost *:80>
    ServerName meinedomain.de
    DocumentRoot /var/www/meinedomain

SetHandler "proxy:unix:/run/php/php7.4-fpm.sock|fcgi://localhost/"


ErrorLog ${APACHE_LOG_DIR}/meinedomain_error.log
CustomLog ${APACHE_LOG_DIR}/meinedomain_access.log combined

Apache konfigurieren und neu laden

sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php7.4-fpm
sudo apache2ctl configtest
sudo systemctl reload apache2

Nginx mit mehreren PHP-Versionen

Für Nginx werden PHP-Versionen über fastcgi_pass auf FPM-Sockets oder Ports konfiguriert.

Beispiel Server Block

server {
    listen 80;
    server_name meinedomain.de;
root /var/www/meinedomain;
index index.php index.html;

location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
}

access_log /var/log/nginx/meinedomain_access.log;
error_log /var/log/nginx/meinedomain_error.log;

}

CLI-PHP-Version wechseln

Für die Kommandozeile kann update-alternatives genutzt werden, um die Standard-PHP-Version zu ändern.

sudo update-alternatives --install /usr/bin/php php /usr/bin/php7.4 74
sudo update-alternatives --install /usr/bin/php php /usr/bin/php8.1 81
sudo update-alternatives --config php
php -v

Testing der PHP-Versionen

Erstellen Sie eine info.php Datei:

echo "<?php phpinfo(); ?>" > /var/www/meinedomain/info.php

Aufrufen über Browser zeigt die aktuell aktive PHP-Version für die Domain.

Netzwerk und Subnetze

Wenn mehrere PHP-Versionen parallel betrieben werden, insbesondere in Load-Balancing-Umgebungen, ist die Netzwerktopologie wichtig, um FPM-Pools korrekt anzusprechen.

IPv4 Subnetz

<math>
Server-IP = 192.168.140.10/24
Subnetzadresse = 192.168.140.10 & 255.255.255.0 = 192.168.140.0
Broadcastadresse = 192.168.140.0 | ~255.255.255.0 = 192.168.140.255
</math>

IPv6 Subnetz

<math>
Server-IP = 2001:db8:abcd:140::10/64
Subnetzadresse = 2001:db8:abcd:140:: & ffff:ffff:ffff:ffff:: = 2001:db8:abcd:140::0
Broadcastadresse = 2001:db8:abcd:140:ffff:ffff:ffff:ffff
</math>

Best Practices

  • PHP-FPM für jede Version separat betreiben
  • Webserver-Pools explizit auf die gewünschte PHP-Version setzen
  • CLI-PHP-Version nur bei Bedarf wechseln
  • Separate Logs für jede PHP-Version
  • Testumgebungen für ältere Versionen nutzen
  • Automatisierte Deployment-Workflows berücksichtigen PHP-Versionen
  • Regelmäßige Updates für alle installierten PHP-Versionen
  • Performance überwachen, da mehrere PHP-FPM-Versionen Ressourcen beanspruchen
  • PHP-Security-Einstellungen pro Version prüfen
  • Backup von Konfigurationen und FPM-Pools erstellen

Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab/GNS3

Ich biete professionelle Unterstützung im Bereich Netzwerkkonfiguration und Network Automation für private Anforderungen, Studienprojekte, Lernlabore, kleine Unternehmen sowie technische Projekte. Ich unterstütze Sie bei der Konfiguration von Routern und Switches, der Erstellung praxisnaher Topologien in Cisco Packet Tracer, dem Aufbau und Troubleshooting von GNS3- und EVE-NG-Labs sowie bei der Automatisierung von Netzwerkaufgaben mit Netmiko, Paramiko, NAPALM und Ansible. Kontaktieren Sie mich jetzt – klicken Sie hier.

Meine Leistungen umfassen:

  • Professionelle Konfiguration von Routern und Switches

  • Einrichtung von VLANs, Trunks, Routing, DHCP, NAT, ACLs und weiteren Netzwerkfunktionen

  • Erstellung von Topologien und Simulationen in Cisco Packet Tracer

  • Aufbau, Analyse und Fehlerbehebung von Netzwerk-Labs in GNS3 und EVE-NG

  • Automatisierung von Netzwerkkonfigurationen mit Python, Netmiko, Paramiko, NAPALM und Ansible

  • Erstellung von Skripten für wiederkehrende Netzwerkaufgaben

  • Dokumentation der Konfigurationen und Bereitstellung nachvollziehbarer Lösungswege

  • Konfigurations-Backups, Optimierung bestehender Setups und technisches Troubleshooting

Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.

Related Articles