Maison >développement back-end >tutoriel php >Utiliser plusieurs versions de PHP sous Linux

Utiliser plusieurs versions de PHP sous Linux

Barbara Streisand
Barbara Streisandoriginal
2024-11-27 09:14:10442parcourir

Using Multiple PHP Version on Linux

Dans cet article, nous verrons comment utiliser plusieurs versions de PHP. Parfois, nous avons rencontré des cas où nous devons travailler sur différents projets d'applications avec différentes technologies et versions PHP. Par exemple, nous souhaitons exécuter les projets Laravel 11 PHP8 et CodeIgniter 4 PHP7, qui exécutent tous deux des versions différentes de PHP. En fait, il existe un moyen plus simple, à savoir utiliser un conteneur Docker, mais nous en discuterons dans le prochain article. Pour l'instant, nous allons discuter de la façon d'installer, de configurer et d'exécuter plusieurs PHP sur l'hôte.

D'accord, nous devons d'abord configurer notre serveur Web à l'aide d'Apache2 et configurer le PHP que nous utiliserons.

apt install apache2

Nous allons installer à partir du référentiel PPA, nous devons donc d'abord ajouter le référentiel

apt-get install software-properties-common -y

Ceci est utile pour pouvoir exécuter la commande add-apt-repository. Ensuite, ajoutez le référentiel avec la commande suivante

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

Nous installons PHP version 7.2

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

Ensuite, nous installons PHP version 8, car mon vps est Ubuntu 24.04 donc la valeur par défaut est PHP 8.3. Pour l'installer sans préciser la version comme suit.

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

Exécutez php-fpm

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

Activez ensuite les modules suivants pour pouvoir utiliser plusieurs versions de PHP

a2enmod actions fcgid alias proxy_fcgi

Redémarrez ensuite le service Apache pour appliquer toutes les modifications.

systemctl restart apache2

D'accord, continuons à configurer virtualhost sur le serveur Web.

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

Définissez également les autorisations et le propriétaire

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

Continuez la configuration du site disponible sur Apache2, nous créons d'abord le fichier de configuration.

Comme nous n'avons pas de domaine, nous ferons la distinction entre les vhosts et les ports. Port 80 exécutant php7.2 et port 90 exécutant php8.3

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

puis collez la configuration suivante

+<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>

Créez un autre fichier de configuration pour PHP version 8

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

Collez également la configuration

+<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>

Dans la section verte il y a plusieurs lignes de configuration qui doivent être modifiées en fonction de nos conditions et besoins

Ensuite, testez si la configuration est fausse ou non, assurez-vous que la syntaxe est correcte afin de pouvoir passer à l'étape suivante

apachectl configtest

Ensuite, nous activons la configuration de l'hôte virtuel

a2ensite app1.conf
a2ensite app2.conf

N'oubliez pas de désactiver la configuration par défaut

a2dissite 000-default.conf

Parce que nous utilisons un port différent sur l'hôte virtuel, nous devons d'abord l'enregistrer.

nano /etc/apache2/ports.conf

Ajouter au rang que j'ai coloré en vert

apt install apache2

Si tout a été fait, il suffit de redémarrer le serveur et de faire un test

apt-get install software-properties-common -y

Faites un test en accédant à l'adresse IP et au port. Je suggère de créer un fichier info.php contenant la fonction phpinfo(); dans chaque racine de document.

veuillez accéder à http://ip-server:port pour les tests

J'espère que cela sera utile et bonne chance pour essayer

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn