Ce tutoriel vous montre comment installer plusieurs versions de PHP sur Ubuntu et faites en sorte qu'un hôte virtuel Apache particulier ou un bloc de serveur Nginx utilise l'un d'eux. Ceci est utile lorsque vous avez plusieurs applications Web sur votre serveur mais qu'une ou deux d'entre elles ne sont pas compatibles avec la version PHP du référentiel Ubuntu par défaut. Le référentiel Ubuntu 18.04 inclut PHP7.2 et le référentiel Ubuntu 20.04 inclut PHP7.4. Nous allons voir comment installer PHP7.3 , PHP7.4 , et PHP8.0 sur un seul serveur Ubuntu.
Installer plusieurs versions de PHP sur Ubuntu via PPA
Le moyen le plus simple d'installer plusieurs versions de PHP consiste à utiliser le PPA d'Ondřej Surý, qui est un développeur Debian. Pour ajouter ce PPA, exécutez les commandes suivantes dans le terminal. Le software-properties-common
package est nécessaire si vous souhaitez installer un logiciel à partir de PPA. Il est installé automatiquement sur le bureau Ubuntu, mais peut être absent de votre serveur Ubuntu.
sudo apt install software-properties-commonsudo add-apt-repository ppa:ondrej/phpsudo apt update
Vous pouvez maintenant installer PHP8.0 sur Ubuntu en exécutant la commande suivante.
sudo apt installer php8.0 php8.0-fpm
Et installez quelques extensions PHP8.0 courantes.
sudo apt installer php8.0-mysql php8.0-mbstring php8.0-xml php8.0-gd php8.0-curl
Vous pouvez voir toutes les extensions PHP7.4 disponibles en tapant sudo apt install php8.0
et en appuyant sur Tab
clé deux fois.
Pour installer PHP7.4 sur Ubuntu , exécutez
sudo apt installer php7.4 php7.4-fpm
Installez quelques extensions PHP7.4 courantes.
sudo apt install php7.4-mysql php7.4-mbstring php7.4-xml php7.4-gd php7.4-curl
Vous pouvez installer PHP7.3 de la même manière. Remplacez simplement le numéro de version dans ces commandes.
Astuce :PHP5.6, PHP7.0 et PHP7.2 sont arrivés en fin de vie, mais vous pouvez toujours obtenir des correctifs de sécurité à partir de ce PPA.
Changement de version de PHP dans l'hôte virtuel Apache
Par défaut, Apache utilise une version PHP sur tous les hôtes virtuels. Si vous souhaitez utiliser une version PHP différente dans un hôte virtuel particulier, vous devrez désactiver le module Apache PHP et exécuter le code PHP via PHP-FPM. Vérifiez si mod_php
est installé.
dpkg -l | grep libapache2-mod-php
S'il est installé, vous devez le désactiver. Par exemple, j'ai libapache2-mod-php7.4
installé sur mon serveur Ubuntu 20.04,
Je le désactive en exécutant :
sudo a2dismod php7.4
Vous devez également désactiver le module prefork MPM.
sudo a2dismod mpm_prefork
Vous devez maintenant exécuter la commande suivante pour activer trois modules afin d'utiliser PHP-FPM, que mod_php
est installé sur votre serveur.
sudo a2enmod mpm_event proxy_fcgi setenvif
L'extrait de configuration PHP-FPM se trouve dans /etc/apache2/conf-available/
.
Supposons que vous souhaitiez utiliser PHP8.0 dans un hôte virtuel Apache, puis ouvrez le fichier de configuration de l'hôte virtuel et ajoutez la ligne suivante dans le <VirtualHost>
balises.
Inclure /etc/apache2/conf-available/php8.0-fpm.conf
Comme ceci :
Enregistrez et fermez le fichier. Vérifiez ensuite la syntaxe.
sudo apachectl -t
Redémarrez Apache pour que la modification prenne effet.
sudo systemctl redémarrer apache2
Supposons maintenant que vous souhaitiez utiliser PHP7.3 dans l'hôte virtuel Mautic car Mautic n'est pas compatible avec PHP7.4, puis ajoutez la ligne suivante dans votre hôte virtuel Mautic entre <VirtualHost>
balises puis redémarrez Apache.
Inclure /etc/apache2/conf-available/php7.3-fpm.conf
Pour tester quelle version de PHP est utilisée par votre hôte virtuel, vous pouvez créer un info.php
fichier à la racine de votre document (disons /var/www/html
).
sudo nano /var/www/html/info.php
Collez le code PHP suivant dans le fichier.
Enregistrez et fermez le fichier. Ensuite, dans la barre d'adresse de votre navigateur, saisissez
votre-domaine.com/info.php
Changer de version de PHP dans le bloc de serveur Nginx
Il est très facile de changer de version de PHP dans le bloc de serveur Nginx. Comme vous le savez probablement, Nginx exécute du code PHP via PHP-FPM, qui écoute sur un socket Unix. Le fichier socket est situé dans /run/php/
répertoire.
Comme vous pouvez le voir sur la capture d'écran, il existe plusieurs fichiers socket PHP-FPM (.sock) sur mon serveur correspondant à différentes versions de PHP. Votre fichier de bloc de serveur Nginx contient généralement l'extrait suivant pour se connecter au serveur PHP-FPM.
emplacement ~ \.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 ; inclure fastcgi_params ; }
La version PHP utilisée par Nginx est déterminée par la troisième ligne de l'extrait de code. Pour utiliser PHP8.0 dans un bloc de serveur Nginx particulier, remplacez cette ligne par :
fastcgi_pass unix :/run/php/php8.0-fpm.sock ;Pour utiliser PHP7.3 dans le bloc de serveur Nginx, remplacez cette ligne par
fastcgi_pass unix:/run/php/php7.3-fpm.sock;Je suis sûr que vous avez l'idée maintenant. Enregistrez et fermez le fichier. Rechargez ensuite Nginx pour que les modifications prennent effet.
sudo systemctl recharger nginxPour tester quelle version de PHP est utilisée par votre bloc serveur, vous pouvez créer un
info.php
fichier à la racine de votre document (disons/var/www/html
).sudo nano /var/www/html/info.phpCollez le code PHP suivant dans le fichier.
Enregistrez et fermez le fichier. Ensuite, dans la barre d'adresse de votre navigateur, saisissez
votre-domaine.com/info.php
Comment définir la version PHP par défaut pour la ligne de commande
Si vous installez une version plus récente de PHP sur Ubuntu, elle deviendra la version par défaut pour la ligne de commande. J'ai installé PHP8.0, mais je veux toujours PHP7.4 comme version par défaut pour la ligne de commande.
Pour définir la version PHP par défaut de la ligne de commande, exécutez la commande suivante.
sudo update-alternatives --config php
Pour vérifier la version actuelle de PHP en ligne de commande, exécutez
php --version