Je gère et maintient plusieurs applications web, mais malheureusement il y en a qui sont encore en CodeIgniter 3, qui s’arrête donc à la version de PHP 8.0.30.
Pour pouvoir continuer à les maintenir, (malgré le fait que cette version de PHP sont obsolète, et que les projets soient migrés), il est nécessaire de faire une petite configuration dans Apache, et d’ajouter les packages FPM.
Il sera nécessaire d’adapter, bien entendu à votre cas de figure, ainsi que le dossier contenant les fichiers et dans les directives du vhost.
Tout d’abord, ajouter les clés GPG du repos dans le système, et ajouter les URL des repos, et faire un update du catalagogue apt.
sudo curl -sSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg
echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list
sudo apt update
Une fois fait, installer les version de PHP-FPM souhaitées
sudo apt install -y php8.0 php8.0-fpm php8.0-cli php8.0-common php8.0-curl php8.0-mbstring php8.0-xml php8.0-zip php8.0-gd
sudo apt install -y php8.4 php8.4-fpm php8.4-cli php8.4-common php8.4-curl php8.4-mbstring php8.4-xml php8.4-zip php8.4-gd
Pour vérifier si l’installation s’est bien déroulée, on peut lancer les commandes suivantes. La version de PHP devrait être affichée
php8.0 -v
php8.4 -v
Installer Apache2 (si pas encore fait), et activer les différents modules et configuration Apache nécessaires
sudo apt install -y apache2
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php8.0-fpm
sudo a2enconf php8.4-fpm
sudo systemctl restart apache2
Créer maintenant les deux dossiers qui contiendront les projets web
sudo mkdir /var/www/html/8.0
sudo mkdir /var/www/html/8.4
Dans le fichier 000-default.conf, écraser le contenu (si pas de directives spéciale à votre environnement) et mettre le contenu ci-dessous:
<VirtualHost *:80>
ServerName localhost # Ou ton domaine par défaut
DocumentRoot /var/www/html
<Directory /var/www/html>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
# Pour le sous-dossier PHP 8.0
<Directory /var/www/html/8.0>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
<FilesMatch \.php$>
SetHandler "proxy:unix:/var/run/php/php8.0-fpm.sock|fcgi://localhost/"
</FilesMatch>
</Directory>
# Pour le sous-dossier PHP 8.4 (ou 8.x)
<Directory /var/www/html/8.4>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
<FilesMatch \.php$>
SetHandler "proxy:unix:/var/run/php/php8.4-fpm.sock|fcgi://localhost/"
</FilesMatch>
</Directory>
# Optionnel : Un handler par défaut pour les autres dossiers (ex. PHP système)
<FilesMatch \.php$>
SetHandler "proxy:unix:/var/run/php/php8.4-fpm.sock|fcgi://localhost/"
</FilesMatch>
</VirtualHost>
Sauvegarder le tout, et redémarrer le service Apache
sudo systemctl restart apache2
Et voila ! Maintenant si vous allez à l’adresse http://localhost/8.0 et http://localhost/8.4, les projets prendront en charge la version de PHP souhaitée dans ces différents dossiers.
Pour la partie CLI (utilisation de PHP en ligne de commande dans le shell), une seule peut être définie par défaut (notamment pour utiliser composer par exemple). Pour changer de version, taper la commande suivante:
sudo update-alternatives --config php
Choisir ensuite la version de PHP, et le tour est joué.