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 combinedApache konfigurieren und neu laden
sudo a2enmod proxy_fcgi setenvif sudo a2enconf php7.4-fpm sudo apache2ctl configtest sudo systemctl reload apache2Nginx mit mehreren PHP-Versionen
Für Nginx werden PHP-Versionen über
fastcgi_passauf 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-alternativesgenutzt 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 -vTesting der PHP-Versionen
Erstellen Sie eine
info.phpDatei:echo "<?php phpinfo(); ?>" > /var/www/meinedomain/info.phpAufrufen ü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.











