Dieses Tutorial zeigt Ihnen, wie Sie mehrere PHP-Versionen installieren auf Ubuntu und lassen Sie einen bestimmten virtuellen Apache-Host oder Nginx-Serverblock einen davon verwenden. Dies ist nützlich, wenn Sie mehrere Webanwendungen auf Ihrem Server haben, aber eine oder zwei davon nicht mit der PHP-Version im Standard-Ubuntu-Repository kompatibel sind. Das Ubuntu 18.04-Repository enthält PHP7.2 und das Ubuntu 20.04-Repository enthält PHP7.4. Wir werden sehen, wie man PHP7.3 installiert , PHP7.4 , und PHP8.0 auf einem einzelnen Ubuntu-Server.
Installieren Sie mehrere Versionen von PHP auf Ubuntu über PPA
Der einfachste Weg, mehrere Versionen von PHP zu installieren, ist die Verwendung des PPA von Ondřej Surý, einem Debian-Entwickler. Um dieses PPA hinzuzufügen, führen Sie die folgenden Befehle im Terminal aus. Die software-properties-common
Paket wird benötigt, wenn Sie Software von PPA installieren möchten. Es wird automatisch auf dem Ubuntu-Desktop installiert, fehlt aber möglicherweise auf Ihrem Ubuntu-Server.
sudo apt install software-properties-common sudo add-apt-repository ppa:ondrej/php sudo apt update
Jetzt können Sie PHP8.0 installieren unter Ubuntu durch Ausführen des folgenden Befehls.
sudo apt install php8.0 php8.0-fpm
Und installieren Sie einige gängige PHP8.0-Erweiterungen.
sudo apt install php8.0-mysql php8.0-mbstring php8.0-xml php8.0-gd php8.0-curl
Sie können alle verfügbaren PHP7.4-Erweiterungen anzeigen, indem Sie sudo apt install php8.0
eingeben und drücken Sie Tab
zweimal drücken.
Zur Installation von PHP7.4 Führen Sie unter Ubuntu
aussudo apt install php7.4 php7.4-fpm
Installieren Sie einige gängige PHP7.4-Erweiterungen.
sudo apt install php7.4-mysql php7.4-mbstring php7.4-xml php7.4-gd php7.4-curl
Sie können PHP7.3 auf die gleiche Weise installieren. Ersetzen Sie einfach die Versionsnummer in diesen Befehlen.
Hinweis :PHP5.6, PHP7.0 und PHP7.2 haben das Ende ihrer Lebensdauer erreicht, aber Sie können immer noch Sicherheitsfixes von diesem PPA erhalten.
Wechseln der PHP-Version im virtuellen Apache-Host
Standardmäßig verwendet Apache eine PHP-Version für alle virtuellen Hosts. Wenn Sie eine andere PHP-Version in einem bestimmten virtuellen Host verwenden möchten, müssen Sie das Apache PHP-Modul deaktivieren und PHP-Code über PHP-FPM ausführen. Prüfen Sie, ob mod_php
installiert ist.
dpkg -l | grep libapache2-mod-php
Wenn es installiert ist, müssen Sie es deaktivieren. Zum Beispiel habe ich libapache2-mod-php7.4
auf meinem Ubuntu 20.04-Server installiert,
Ich deaktiviere es, indem ich Folgendes ausführe:
sudo a2dismod php7.4
Sie müssen auch das Prefork-MPM-Modul deaktivieren.
sudo a2dismod mpm_prefork
Jetzt müssen Sie den folgenden Befehl ausführen, um drei Module zu aktivieren, um PHP-FPM zu verwenden, unabhängig davon, ob mod_php
auf Ihrem Server installiert ist.
sudo a2enmod mpm_event proxy_fcgi setenvif
Das PHP-FPM-Konfigurations-Snippet befindet sich unter /etc/apache2/conf-available/
.
Angenommen, Sie möchten PHP8.0 in einem virtuellen Apache-Host verwenden, öffnen Sie dann die Konfigurationsdatei des virtuellen Hosts und fügen Sie die folgende Zeile in <VirtualHost>
ein Tags.
Include /etc/apache2/conf-available/php8.0-fpm.conf
So:
Speichern und schließen Sie die Datei. Überprüfen Sie dann die Syntax.
sudo apachectl -t
Starten Sie Apache neu, damit die Änderung wirksam wird.
sudo systemctl restart apache2
Nehmen wir nun an, Sie möchten PHP7.3 im virtuellen Mautic-Host verwenden, da Mautic nicht mit PHP7.4 kompatibel ist, und fügen Sie dann die folgende Zeile in Ihrem virtuellen Mautic-Host zwischen <VirtualHost>
hinzu -Tags und starten Sie dann Apache neu.
Include /etc/apache2/conf-available/php7.3-fpm.conf
Um zu testen, welche PHP-Version von Ihrem virtuellen Host verwendet wird, können Sie eine info.php
erstellen Datei in Ihrem Dokumentenstammverzeichnis (sagen wir /var/www/html
).
sudo nano /var/www/html/info.php
Fügen Sie den folgenden PHP-Code in die Datei ein.
<?php phpinfo(); ?>
Speichern und schließen Sie die Datei. Geben Sie dann in die Adressleiste Ihres Browsers ein
your-domain.com/info.php
Wechseln der PHP-Version im Nginx-Serverblock
Es ist sehr einfach, die PHP-Version im Nginx-Serverblock zu wechseln. Wie Sie wahrscheinlich wissen, führt Nginx PHP-Code über PHP-FPM aus, das auf einem Unix-Socket lauscht. Die Socket-Datei befindet sich in /run/php/
Verzeichnis.
Wie Sie auf dem Screenshot sehen können, gibt es auf meinem Server mehrere PHP-FPM-Socket-Dateien (.sock), die verschiedenen PHP-Versionen entsprechen. Ihre Nginx-Serverblockdatei enthält normalerweise das folgende Snippet, um eine Verbindung zum PHP-FPM-Server herzustellen.
location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:/run/php/php7.4-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
Die von Nginx verwendete PHP-Version wird durch die dritte Zeile im Snippet bestimmt. Um PHP8.0 in einem bestimmten Nginx-Serverblock zu verwenden, ändern Sie diese Zeile in:
fastcgi_pass unix:/run/php/php8.0-fpm.sock;
Um PHP7.3 im Nginx-Serverblock zu verwenden, ändern Sie diese Zeile in
fastcgi_pass unix:/run/php/php7.3-fpm.sock;
Ich bin sicher, Sie haben jetzt die Idee. Speichern und schließen Sie die Datei. Laden Sie dann Nginx neu, damit die Änderungen wirksam werden.
sudo systemctl reload nginx
Um zu testen, welche PHP-Version von Ihrem Serverblock verwendet wird, können Sie eine info.php
erstellen Datei in Ihrem Dokumentenstammverzeichnis (sagen wir /var/www/html
).
sudo nano /var/www/html/info.php
Fügen Sie den folgenden PHP-Code in die Datei ein.
<?php phpinfo(); ?>
Speichern und schließen Sie die Datei. Geben Sie dann in die Adressleiste Ihres Browsers ein
your-domain.com/info.php
So legen Sie die Standard-PHP-Version für die Befehlszeile fest
Wenn Sie eine neuere Version von PHP auf Ubuntu installieren, wird diese zur Standardversion für die Befehlszeile. Ich habe PHP8.0 installiert, möchte aber immer noch PHP7.4 als Standardversion für die Befehlszeile.
Führen Sie den folgenden Befehl aus, um die standardmäßige PHP-Version für die Befehlszeile festzulegen.
sudo update-alternatives --config php
Um die aktuelle Version von PHP auf der Befehlszeile zu überprüfen, führen Sie
ausphp --version