« LINUX:Plusieurs versions de PHP » : différence entre les versions
Aucun résumé des modifications |
Aucun résumé des modifications |
||
Ligne 91 : | Ligne 91 : | ||
Ses fichiers de configuration se situent sous le répertoire "/etc/httpd". | Ses fichiers de configuration se situent sous le répertoire "/etc/httpd". | ||
Pour qu'Apache puisse utiliser le PHP, il doit pouvoir utiliser une application ou un module tiers de type CGI. Sous Fedora 35, par défaut, le protocole utilisé est le FastCGI. Chaque requête sous forme d'un script PHP est transmis à un autre service PHP-FPM. Pour y arriver le module "proxy_fcgi_module". On peut le vérifier avec la commande suivante qui est un extrait des modules chargés par Apache: | Pour qu'Apache puisse utiliser le PHP, il doit pouvoir utiliser une application ou un module tiers de type CGI. Sous Fedora 35, par défaut, le protocole utilisé est le FastCGI. Chaque requête sous forme d'un script PHP est transmis à un autre service PHP-FPM. Pour y arriver, le module "proxy_fcgi_module" doit être activé. On peut le vérifier avec la commande suivante qui est un extrait des modules chargés par Apache: | ||
httpd -M | grep fcgi | httpd -M | grep fcgi | ||
Pour optimiser ces traitements, Apache intègre un serveur MPM (Multi-Processing Modules) dont la fonctionnalité "event" est activée. On peut vérifier que le module correspondant "mpm_event_module" est bien chargé avec la commande suivante: | Pour optimiser ces traitements, Apache intègre un serveur MPM (Multi-Processing Modules) dont la fonctionnalité "event" est activée. On peut vérifier que le module correspondant "mpm_event_module" est bien chargé avec la commande suivante: | ||
httpd -M | grep event | httpd -M | grep event | ||
On peut le vérifier avec la commande suivante: | On peut aussi le vérifier avec la commande suivante: | ||
httpd -V | httpd -V | ||
qui donne: | qui donne: | ||
Ligne 105 : | Ligne 105 : | ||
Enfin il faudra définir le lancement de l'application tierce. Mais selon le site visité, il faut pouvoir choisir la version de PHP adaptée, compatible avec ce site. | Enfin il faudra définir le lancement de l'application tierce. Mais selon le site visité, il faut pouvoir choisir la version de PHP adaptée, compatible avec ce site. | ||
Dès que la configuration est finie, on relance Apache comme vu plus haut. On remarque que, par la même occasion, deux services liés à nos deux versions de PHP sont lancés automatiquement: '''php-fpm.service''' pour PHP version 8.0 et '''php74-php-fpm.service''' pour PHP version 7.4. | |||
Version du 26 décembre 2021 à 16:31
But
Une distribution de Linux n'installe qu'une version précise de PHP. Or chaque logiciel Web n'est compatible qu'avec une série réduite de versions non nécessairement compatibles avec celle installée. Il est donc nécessaire de ruser pour contourner cette limitation.
La distribution Fedora est connue pour présenter les dernières versions du Kernel et des logiciels. Lors de l'installation de la version 35 de Fedora, c'est PHP 8.0 qui est présenté alors que sous la version précédente de Fedora, c'était la version 7.4 de PHP. Or de nombreux logiciels Web, installé sur mon serveur, ne sont pas encore compatibles avec cette version ou ont été migrés plus tard.
Il fallait donc avoir une double installation des versions 7.4 et 8.0 de PHP.
Installation du dépôt de Remi
En cherchant un peu, on tombe sur les dépôts de Remi qui permettent cette coexistence.
Avant de continuer, il faut s'assurer que la machine est à jour via la commande:
dnf upgrade --refresh
Dès lors on peut installer le dépôt correspondant à notre distribution. Dans notre cas, on est en présence Fedora 35. Voici la commande à adapter selon vos besoins:
dnf install https://rpms.remirepo.net/fedora/remi-release-35.rpm
Ensuite il faut activer certain module et en désactiver d'autres:
dnf config-manager --set-enabled remi dnf config-manager --set-disabled remi-modular dnf config-manager --set-disabled remi-php81
Enfin nous pouvons rafraichir la liste des logiciels:
dnf upgrade --refresh
La commande suivante permet d'obtenir la liste des logiciels disponibles et en faisant un filtre sur PHP, on obtient ce qui concerne PHP:
dnf list | grep "^php"
En première colonne, on a le nom du logiciel et en seconde sa version. Dans la liste, tout ce qui commence par "php." ou php-" vient avec la distribution; leur version est 8.0. Plus bas, on remarque des entrée commençant par "php" suivi d'un n° faisant référence à la version; ainsi tout ce qui commence par "php74" est lié à la version 7.4. On remarque la présence des modules de la version 5.6 plutôt ancienne mais parfois encore utilisée et des diverses versions de PHP 7.X et de PHP 8.X.
Notons que pour désinstaller le dépôt de Remi, la commande suivante est à exécuter:
dnf remove remi-release
Installation de PHP version 7.4
Maintenant installons PHP version 7.4 avec les commandes suivantes:
dnf install php74 dnf install php74-php
Elles comprennent aussi l'intégration avec Apache.
Ensuite installons quelques modules de base qui nous nécessaires:
dnf install php74-php-gd dnf install php74-php-mysqli dnf install php74-php-zip dnf install php74-php-intl dnf install php74-php-imagick
La commande pour PHP version 7.4:
php74 --modules
et la commande pour PHP de la distribution:
php --modules
permettent de comparer la présence des modules présents de part et d'autre. A votre charge d'ajouter les modules nécessaires.
Les commandes équivalentes:
php74 -v
et
php -v
permettent de comparer leur version.
Localisation et configuration des PHP
Comme vous l'avez remarqué, en ligne de commande, l'appel:
php
fait appel à PHP version 8.0 et
php74
fait appel à PHP version 7.4. Ceci est important car certains traitements de maintenance nécessitent d'y faire appel dans des scripts.
Ces deux exécutables se retrouvent dans le répertoire "/bin".
Les fichiers de configuration de PHP version 8.0, venant avec la distribution, se retrouvent dans les répertoires "/etc" et en dessous.
Par contre, tout ce qui concerne PHP version 7.4 se retrouve dans le répertoire "/etc/opt/remi/php74". Le reste, les exécutables et librairies se trouvent eux sous le répertoire "/opt/remi/php74/root/usr". Adaptez le fichier de configuration de base "/etc/opt/remi/php74/php.ini" pour la version 7.4 comme vous l'avez fait pour le fichier "/etc/php.ini" dédié à la version 8.0.
Les journaux de PHP version 7.4 se situent dans le répertoire "/var/opt/remi/php74/log/php-fpm". Ceux de PHP version 8.0, venant avec la distribution, se trouvent dans le répertoire traditionnel "/var/log/php-fpm". Ce dernier point a son importance car lorsqu'on utilisera PHP 7.4 via le serveur Web, il faudra aller voir les messages d'erreur dans ce premier répertoire.
Apache
Nous utilisons Apache.
Le service dédié à Apache se nomme "httpd.service". Il est activé avec la commande:
systemctl enable httpd.service
et son démarrage, son arrêt ou son redémarrage se fait avec les commandes respectives suivantes:
Systemctl start httpd.service Systemctl stop httpd.service Systemctl restart httpd.service
Ses fichiers de configuration se situent sous le répertoire "/etc/httpd".
Pour qu'Apache puisse utiliser le PHP, il doit pouvoir utiliser une application ou un module tiers de type CGI. Sous Fedora 35, par défaut, le protocole utilisé est le FastCGI. Chaque requête sous forme d'un script PHP est transmis à un autre service PHP-FPM. Pour y arriver, le module "proxy_fcgi_module" doit être activé. On peut le vérifier avec la commande suivante qui est un extrait des modules chargés par Apache:
httpd -M | grep fcgi
Pour optimiser ces traitements, Apache intègre un serveur MPM (Multi-Processing Modules) dont la fonctionnalité "event" est activée. On peut vérifier que le module correspondant "mpm_event_module" est bien chargé avec la commande suivante:
httpd -M | grep event
On peut aussi le vérifier avec la commande suivante:
httpd -V
qui donne:
Server version: Apache/2.4.52 (Fedora Linux) Architecture: 64-bit Server MPM: event threaded: yes (fixed thread count) forked: yes (variable process count)
Enfin il faudra définir le lancement de l'application tierce. Mais selon le site visité, il faut pouvoir choisir la version de PHP adaptée, compatible avec ce site.
Dès que la configuration est finie, on relance Apache comme vu plus haut. On remarque que, par la même occasion, deux services liés à nos deux versions de PHP sont lancés automatiquement: php-fpm.service pour PHP version 8.0 et php74-php-fpm.service pour PHP version 7.4.