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

Utiliser plusieurs versions de PHP sous Linux

Barbara Streisand
Libérer: 2024-11-27 09:14:10
original
389 Les gens l'ont consulté

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
Copier après la connexion
Copier après la connexion

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
Copier après la connexion
Copier après la connexion

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
Copier après la connexion
apt update -y
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

Exécutez php-fpm

systemctl start php7.2-fpm
Copier après la connexion
systemctl start php8.3-fpm
Copier après la connexion

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

a2enmod actions fcgid alias proxy_fcgi
Copier après la connexion

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

systemctl restart apache2
Copier après la connexion

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

mkdir /var/www/app1
mkdir /var/www/app2
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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>
Copier après la connexion

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

nano /etc/apache2/sites-available/server2.conf
Copier après la connexion

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>
Copier après la connexion

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
Copier après la connexion

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

a2ensite app1.conf
a2ensite app2.conf
Copier après la connexion

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

a2dissite 000-default.conf
Copier après la connexion

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

nano /etc/apache2/ports.conf
Copier après la connexion

Ajouter au rang que j'ai coloré en vert

apt install apache2
Copier après la connexion
Copier après la connexion

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

apt-get install software-properties-common -y
Copier après la connexion
Copier après la connexion

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!

source:dev.to
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal