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!