Mes ressources pour le Web

Installer 2 versions de PHP 8.0.x et 7.4.x

Installation de 2 versions de PHP (PHP 8.0.x et 74.x) sur un Debian 10 XFCE
J'avais installé sur une machine 64 bits une version de PHP 8.0 rc avec MariaDB sur une Debian 10 Buster XFCE , mais comme certains outils n'étaient pas encore compatible PHP 8.0, j'ai du installer PHP 7.4 pour valider mes tests .

Le but de ce mode d'emploi est de créer en local, un à partir du serveur Apache deux versions de PHP pour faire des tests dans le home/dossier_personnel/ avec un seul VirtualHost .

Pour cela avec Apache et PHP-FPM, il est possible d’utiliser plusieurs versions différente de PHP sur le même serveur.

Nota :

Dans cette page (installation en local) linux est le nom du dossier personnel : celui qui se créer avec le nom d’utilisateur à l'installation, dans le home, donc ici  /home/linux/ dans cette page. Il faut donc adapter le nom suivant votre dossier personnel.

Après l'installation de PHP 8.0 comme indiqué Installer PHP 8.0.x + MariaDB avec Debian 10

Les manipulations sont faites en ligne de commande en terminal administrateur
sudo -s
(plus simple à reproduire ici)
Uniquement pour tests et information "à vos risques et périls" ;-)
Nota suivant la distribution Linux le logiciel éditeur de texte mousepad peut être remplacer gedit, geany par ou autre possibilité à votre convenance pour l’édition des fichiers textes


A je vais compléter
l'installation d'Apache par le module libapache2-mod-fcgid qui
permet de lancer plusieurs d'instances de programme CGI pour traiter les requêtes simultanées.

A - Préparation et installation


A1. mise à jour des paquets
apt-get update

Par sécurité
apt-get upgrade

A2. Installation du
module libapache2-mod-fcgid
apt-get install libapache2-mod-fcgid

Les NOUVEAUX paquets suivants seront installés :
libapache2-mod-fcgid
0 mis à jour, 1 nouvellement installés, 0 à enlever et 0 non mis à jour.
Ici se sera libapache2-mod-fcgid (1:2.3.9-4)

A3. Installation de php8.0-fpm
apt-get install php8.0-fpm

Les NOUVEAUX paquets suivants seront installés :
php8.0-fpm
0 mis à jour, 1 nouvellement installés, 0 à enlever et 0 non mis à jour.
A4. Activer le module Apache
a2enmod actions fcgid alias proxy_fcgi

Enabling module actions.
Module fcgid already enabled
Module alias already enabled
Considering dependency proxy for proxy_fcgi:
Enabling module proxy.
Enabling module proxy_fcgi.
To activate the new configuration, you need to run:
systemctl restart apache2
Donc pour relancer le serveur
systemctl reload apache2
Éventuellement vérifier avec
a2enmod proxy_fcgi setenvif

Considering dependency proxy for proxy_fcgi:
Module proxy already enabled
Module proxy_fcgi already enabled
Module setenvif already enabled

A5. Ensuite lancez maintenant le service phpx-fpm, puis vérifier l"état du service
systemctl start php8.0-fpm
systemctl status php8.0-fpm
● php8.0-fpm.service - The PHP 8.0 FastCGI Process Manager
Loaded: loaded (/lib/systemd/system/php8.0-fpm.service; enabled; vendor prese
Active: active (running) since Tue 2020-11-27 19:08:24 CET; 2min 27s ago
Docs: man:php-fpm8.0(8)
Main PID: 20466 (php-fpm8.0)
Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/se
Tasks: 3 (limit: 3529)
Memory: 15.9M
CGroup: /system.slice/php8.0-fpm.service
├─20466 php-fpm: master process (/etc/php/8.0/fpm/php-fpm.conf)
├─20467 php-fpm: pool www
└─20468 php-fpm: pool www

Comme il a été déjà créer un VirtualHost sites dans le home il suffit de tester le phpinfo.php
pour vérifier que c'est bien php8.0-fpm
8rc3_fpm_r

Note : si modifications du php.ini
suivant la distribution Linux le logiciel éditeur de texte mousepad peut être remplacer gedit, geany par ou autre possibilité a votre convenance, le but c'est d’éditer le fichier /etc/php/8.0/fpm/php.ini
Et non pas le fichier par défaut etc/php/8.0/apache2/php.ini


B. Pour avoir PHP 7.4.x il faut utiliser aussi le dépôt de Ondřej Surý php7.4 

B1. Installation de PHP 7.4.12

Attention le code ci-dessous doit être sur une seule ligne
apt install php7.4 libapache2-mod-php7.4 php7.4-mysql php7.4-curl php7.4-json php7.3-gd php7.4-intl php7.4-sqlite3 php7.4-gmp php7.4-mbstring php7.4-xml php7.4-zip
Supprimer éventuellement les modules qui ne vous intéressent pas
Les paquets supplémentaires suivants seront installés : 
php7.4-cli php7.4-common php7.4-opcache php7.4-readline
Paquets suggérés :
php-pear
Les NOUVEAUX paquets suivants seront installés :
libapache2-mod-php7.4 php7.4 php7.4-cli php7.4-common php7.4-curl php7.4-gd
php7.4-gmp php7.4-intl php7.4-json php7.4-mbstring php7.4-mysql
php7.4-opcache php7.4-readline php7.4-sqlite3 php7.4-xml php7.4-zip
0 mis à jour, 16 nouvellement installés, 0 à enlever et 0 non mis à jour.
Paramétrage de php7.4 (7.4.12-3+0~20201103.32+debian10~1.gbpa97e22) ...

B2. Installation de php7.4-fpm

apt-get install php7.4-fpm

Les NOUVEAUX paquets suivants seront installés :
php7.4-fpm
0 mis à jour, 1 nouvellement installés, 0 à enlever et 0 non mis à jour.
Traitement des actions différées (« triggers ») pour php7.4-fpm (7.4.12-3+0~20201103.32+debian10~1.gbpa97e22) ...
NOTICE: Not enabling PHP 7.4 FPM by default.
NOTICE: To enable PHP 7.4 FPM in Apache2 do:
NOTICE: a2enmod proxy_fcgi setenvif
NOTICE: a2enconf php7.4-fpm
NOTICE: You are seeing this message because you have apache2 package installed.

B3.
Ensuite
lancez maintenant le service phpx-fpm, puis vérifier l"état du service
systemctl start php7.4-fpm

systemctl status php7.4-fpm
php7.4-fpm.service - The PHP 7.4 FastCGI Process Manager
Loaded: loaded (/lib/systemd/system/php7.4-fpm.service; enabled; vendor prese
Active: active (running) since Sat 2020-11-28 17:41:18 CET; 1min 49s ago
Docs: man:php-fpm7.4(8)
Process: 18411 ExecStartPost=/usr/lib/php/php-fpm-socket-helper install /run/p
Main PID: 18408 (php-fpm7.4)
Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/se
Tasks: 3 (limit: 3528)
Memory: 15.7M
CGroup: /system.slice/php7.4-fpm.service
├─18408 php-fpm: master process (/etc/php/7.4/fpm/php-fpm.conf)
├─18409 php-fpm: pool www
└─18410 php-fpm: pool www

B4. Maintenant dans le sous dossier /adminer/  ou j'ai installé Adminer qui ne fonctionne pas correctement  en PHP 8.0.x
-
création d'un fichier . htaccess pour avoir PHP 7.x

<FilesMatch \.php>
    # Apache 2.4.10+ can proxy to unix socket
    SetHandler "proxy:unix:/var/run/php/php7.4-fpm.sock|fcgi://localhost/"
</FilesMatch>


il suffit de tester le phpinfo.php
8rc3_fpm_r


C1. Donc en fonction de mes besoins et des sous dossiers avec un fichier . htaccess je peux avoir 2 versions de PHP

Par défaut comme j'avais installer PHP 8.x, j'ai du PHP 8.0.x sans fichier . htaccess (PHP 7.x)
C2. Si je souhaite avoir 7.4.12 par défaut
a2enconf php7.4-fpm
Enabling conf php7.4-fpm.
To activate the new configuration, you need to run:
systemctl reload apache2

systemctl reload apache2
ICI on a PHP 7.4.12
création d'un fichier . htaccess pour avoir PHP 8.x dans certains dossiers

<FilesMatch \.php>
    # Apache 2.4.10+ can proxy to unix socket
    SetHandler "proxy:unix:/var/run/php/php8.0-fpm.sock|fcgi://localhost/"
</FilesMatch>

C3. Sinon pour revenir à PHP 8.0.x par défaut
a2enconf php8.0-fpm
Enabling conf php8.0-fpm.
To activate the new configuration, you need to run:
systemctl reload apache2

systemctl reload apache2
ICI on a PHP 8.0.x




Crédit pour les affichages en ligne de commande : Syntax highlighting for the Web


Erreurs, omissions, corrections merci de me le signaler

Original 29/10/2020
- 01/10/21 remplacé PHP 8 par 8.0.x
Document http://jc.etiemble.free.fr/abc/ JCE -
version du 01/10/2021-0  CC_licence