Mes ressources pour le Web

Installer 2 versions de PHP 8.x et 7.x

Installation de 2 versions de PHP (PHP 8 et 7) 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, 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 comme indiqué Installer PHP 8.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éja créer un VirtualHost sites dans le home il suffit de tester le phpinfo.php
pour vérfier 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.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.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

Document http://jc.etiemble.free.fr/abc/ JCE -
version du 29/11/2020-0  CC_licence