Heim >Backend-Entwicklung >PHP-Tutorial >Verwendung mehrerer PHP-Versionen unter Linux

Verwendung mehrerer PHP-Versionen unter Linux

Barbara Streisand
Barbara StreisandOriginal
2024-11-27 09:14:10443Durchsuche

Using Multiple PHP Version on Linux

In diesem Beitrag besprechen wir, wie man mehrere PHP-Versionen verwendet. Manchmal sind wir auf Fälle gestoßen, in denen wir an verschiedenen App-Projekten mit unterschiedlichen Technologien und PHP-Versionen arbeiten müssen. Beispielsweise möchten wir die Projekte Laravel 11 PHP8 und CodeIgniter 4 PHP7 ausführen, die beide unterschiedliche Versionen von PHP ausführen. Eigentlich gibt es einen einfacheren Weg, nämlich die Verwendung eines Docker-Containers, aber darauf gehen wir im nächsten Beitrag ein. Zunächst besprechen wir, wie man mehrere PHP auf dem Host installiert, konfiguriert und ausführt.

Okay, zuerst müssen wir unseren Webserver mit Apache2 einrichten und das PHP einrichten, das wir verwenden werden.

apt install apache2

Wir werden aus dem PPA-Repository installieren, daher müssen wir zuerst das Repository hinzufügen

apt-get install software-properties-common -y

Dies ist nützlich, damit Sie den Befehl add-apt-repository ausführen können. Als nächstes fügen Sie das Repository mit dem folgenden Befehl hinzu

add-apt-repository ppa:ondrej/php
apt update -y

Wir installieren PHP Version 7.2

apt-get install php7.2 php7.2-fpm php7.2-mysql libapache2-mod-php7.2 libapache2-mod-fcgid -y

Dann installieren wir PHP Version 8, da mein VPS Ubuntu 24.04 ist, also ist der Standard PHP 8.3. Um es zu installieren, ohne die Version anzugeben, gehen Sie wie folgt vor.

apt-get install php php-fpm php-mysql libapache2-mod-php libapache2-mod-fcgid -y

Führen Sie php-fpm aus

systemctl start php7.2-fpm
systemctl start php8.3-fpm

Aktivieren Sie dann die folgenden Module, damit Sie mehrere PHP-Versionen nutzen können

a2enmod actions fcgid alias proxy_fcgi

Dann starten Sie den Apache-Dienst neu, um alle Änderungen zu übernehmen.

systemctl restart apache2

Okay, lass uns mit der Einrichtung von Virtualhost auf dem Webserver fortfahren.

mkdir /var/www/app1
mkdir /var/www/app2

Legen Sie außerdem die Berechtigungen und den Besitzer fest

chown -R www-data:www-data /var/www/app1
chown -R www-data:www-data /var/www/app2
chmod -R 775 /var/www/app1
chmod -R 775 /var/www/app2

Fahren Sie mit der Konfiguration der Site-verfügbaren Seite auf Apache2 fort. Wir erstellen zuerst die Konfigurationsdatei.

Da wir keine Domain haben, unterscheiden wir zwischen Vhosts und Ports. Port 80 mit PHP7.2 und Port 90 mit PHP8.3

nano /etc/apache2/sites-available/app1.conf

Fügen Sie dann die folgende Konfiguration ein

+<VirtualHost *:80>
+     ServerAdmin app1
+     ServerName app1.com
+     DocumentRoot /var/www/app1
+     DirectoryIndex info.php

+     <Directory /var/www/app1>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
     </Directory>

    <FilesMatch \.php$>
        # From the Apache version 2.4.10 and above, use the SetHandler to run PHP as a fastCGI process server
+         SetHandler "proxy:unix:/run/php/php7.2-fpm.sock|fcgi://localhost"
    </FilesMatch>

     ErrorLog ${APACHE_LOG_DIR}/site1.your_domain_error.log
     CustomLog ${APACHE_LOG_DIR}/site1.your_domain_access.log combined
</VirtualHost>

Erstellen Sie eine weitere Konfigurationsdatei für PHP Version 8

nano /etc/apache2/sites-available/server2.conf

Fügen Sie auch die Konfiguration ein

+<VirtualHost *:90>
+     ServerAdmin site2
+    ServerName site2.com
+     DocumentRoot /var/www/app2
+     DirectoryIndex info.php

+     <Directory /var/www/app2>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
     </Directory>

    <FilesMatch \.php$>
        # From the Apache version 2.4.10 and above, use the SetHandler to run PHP as a fastCGI process server
+         SetHandler "proxy:unix:/run/php/php8.3-fpm.sock|fcgi://localhost"
    </FilesMatch>

     ErrorLog ${APACHE_LOG_DIR}/site1.your_domain_error.log
     CustomLog ${APACHE_LOG_DIR}/site1.your_domain_access.log combined
</VirtualHost>

Im grünen Bereich gibt es mehrere Konfigurationszeilen, die entsprechend unseren Bedingungen und Bedürfnissen geändert werden müssen

Testen Sie dann, ob die Konfiguration falsch ist oder nicht, stellen Sie sicher, dass die Syntax in Ordnung ist, damit Sie mit der nächsten Stufe fortfahren können

apachectl configtest

Als nächstes aktivieren wir die Virtualhost-Konfiguration

a2ensite app1.conf
a2ensite app2.conf

Vergessen Sie nicht, die Standardkonfiguration zu deaktivieren

a2dissite 000-default.conf

Da wir einen anderen Port auf dem virtuellen Host verwenden, müssen wir ihn zuerst registrieren.

nano /etc/apache2/ports.conf

Zur Zeile hinzufügen, die ich grün gefärbt habe

apt install apache2

Wenn alles erledigt ist, müssen wir nur noch den Server neu starten und einen Test durchführen

apt-get install software-properties-common -y

Führen Sie einen Test durch, indem Sie auf die IP-Adresse und den Port zugreifen. Ich schlage vor, eine info.php-Datei zu erstellen, die die Funktion phpinfo(); enthält. in jedem Dokumentstamm.

Bitte greifen Sie zum Testen auf http://ip-server:port zu

Hoffentlich ist das nützlich und viel Glück beim Ausprobieren

Das obige ist der detaillierte Inhalt vonVerwendung mehrerer PHP-Versionen unter Linux. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn