[PHP] Configuration de vhost apache2 avec php-fpm de differente version [Résolu]

Applications, problèmes de configuration réseau
Répondre
Avatar de l’utilisateur
steveoriol
newbie
Messages : 9
Inscription : mer. 01 juil. 2020, 11:12
Localisation : Grenoble

[PHP] Configuration de vhost apache2 avec php-fpm de differente version [Résolu]

Message par steveoriol »

Bonjour,

Afin de récupérer et maintenir des sites web j'ai besoin de pouvoir configurer des "virtualhost" dans apache2 avec des versions de php différentes.
Je suis nouveau sur archlinux et je viens de debian (ubuntu). J'avais pour habitude d'installer tous les packages php-fpm disponible de 5.6 à 7.4, puis de spécifier dans chaque virtualhost la version de php-fpm à utiliser, avec ceci :

Code : Tout sélectionner

        <IfModule proxy_fcgi_module>
            <FilesMatch ".+\.ph(ar|p|tml)$">
                SetHandler "proxy:unix:/run/php/php7.2-fpm.sock|fcgi://localhost"
            </FilesMatch>
        </IfModule>
Puis, je pouvais aussi choisir et modifier la version de php CLI avec la commande :

Code : Tout sélectionner

update-alternatives --set php /usr/bin/php[5.6|7.0|7.1|7.2|7.3|7.4]
Comment je peux faire la même chose sous archlinux ?
Merci.


Pour le moment, j'ai un apache qui fonctionne bien avec le PHP en vigueur 7.4.7
avec les fichiers de config dans "/etc/php/"
et j'ai bien :

Code : Tout sélectionner

[steve@VISU sites]$ php -v
PHP 7.4.7 (cli) (built: Jun  9 2020 19:37:15) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Xdebug v2.9.6, Copyright (c) 2002-2020, by Derick Rethans
[steve@VISU sites]$ php-fpm -v
PHP 7.4.7 (fpm-fcgi) (built: Jun  9 2020 19:37:15)
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Xdebug v2.9.6, Copyright (c) 2002-2020, by Derick Rethans
et j'ai installé "php72-fpm" AUR:

Code : Tout sélectionner

yay -S php72-fpm
qui a installé les fichiers de config dans "/etc/php72/"
et

Code : Tout sélectionner

[steve@VISU sites]$ php72 -v
PHP 7.2.30 (cli) (built: Jul  1 2020 08:37:44) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
et le service "php72-fpm" :

Code : Tout sélectionner

[steve@VISU sites]$ sudo systemctl enable php72-fpm.service
Created symlink /etc/systemd/system/multi-user.target.wants/php72-fpm.service → /usr/lib/systemd/system/php72-fpm.service.
[steve@VISU sites]$ sudo systemctl start php72-fpm.service
[steve@VISU sites]$ sudo systemctl status php72-fpm.service
● php72-fpm.service - The PHP FastCGI Process Manager
     Loaded: loaded (/usr/lib/systemd/system/php72-fpm.service; enabled; vendor preset: disabled)
     Active: active (running) since Wed 2020-07-01 14:18:14 CEST; 6s ago
   Main PID: 528733 (php-fpm72)
     Status: "Ready to handle connections"
      Tasks: 3 (limit: 38470)
     Memory: 5.4M
     CGroup: /system.slice/php72-fpm.service
             ├─528733 php-fpm: master process (/etc/php72/php-fpm.conf)
             ├─528734 php-fpm: pool www
             └─528735 php-fpm: pool www

juil. 01 14:18:14 VISU systemd[1]: Starting The PHP FastCGI Process Manager...
juil. 01 14:18:14 VISU php-fpm[528733]: [NOTICE] fpm is running, pid 528733
juil. 01 14:18:14 VISU php-fpm[528733]: [NOTICE] ready to handle connections
juil. 01 14:18:14 VISU php-fpm[528733]: [NOTICE] systemd monitor interval set to 10000ms
juil. 01 14:18:14 VISU systemd[1]: Started The PHP FastCGI Process Manager.
Dernière modification par steveoriol le lun. 06 juil. 2020, 15:28, modifié 3 fois.
Avatar de l’utilisateur
papajoke
Elfe
Messages : 773
Inscription : sam. 30 août 2014, 19:54

Re: [PHP] Configutaion de vhost apache2 avec php-fpm de differente version

Message par papajoke »

bonjour
il y est d'après le pkgbuild https://aur.archlinux.org/cgit/aur.git/ ... php72#n221
mais le format est phpXX-fpm (comme le nom du paquet) :wink:

ps: tu n'as pas l’autocomplétion ??? elle fonctionne avec zsh/systemctl


----
perso je ne me suis jamais ennuyé avec cela sous arch, docker compose est mon ami...
Arch stable - Kde 5 / zsh - btrfs/mbr - Intel Core i3 - 6Go RAM - GeForce 405 video-nouveau
Avatar de l’utilisateur
steveoriol
newbie
Messages : 9
Inscription : mer. 01 juil. 2020, 11:12
Localisation : Grenoble

Re: [PHP] Configutaion de vhost apache2 avec php-fpm de differente version

Message par steveoriol »

Oupss !,
j'ai corrigé, merci, il ne manque plus qu'a trouver pour configurer le vitualhost pour qui utilise "php72-fpm" plutot que "php-fpm"
et comment utiliser le PHP72 en CLI quand j'en ai besoin ;-)
Avatar de l’utilisateur
steveoriol
newbie
Messages : 9
Inscription : mer. 01 juil. 2020, 11:12
Localisation : Grenoble

Re: [PHP] Configutaion de vhost apache2 avec php-fpm de differente version

Message par steveoriol »

:) OK, J'ai trouvé pour pouvoir choisir le PHP par virtualhost.
Il suffit de créer un fichier commun à inclure dans chaque virtualhost qui en ont besoin et ainsi écraser la config de base qui fourni le PHP 7.4.

Créer a coté de "/etc/httpd/conf/extra/php-fpm.conf" voir ici
"/etc/httpd/conf/extra/php72-fpm.conf" avec :

Code : Tout sélectionner

DirectoryIndex index.php index.html
<FilesMatch \.php$>
    SetHandler "proxy:unix:/run/php-fpm/php72-fpm.sock|fcgi://localhost/"
</FilesMatch>
et dans le virtualhost :

Code : Tout sélectionner

<VirtualHost *:80>
    ServerName site_en_php72.dom
    [...]
    Include conf/extra/php72-fpm.conf
</VirtualHost>
==> Il manque plus que le switch facile de version de PHP en CLI ...
Avatar de l’utilisateur
papajoke
Elfe
Messages : 773
Inscription : sam. 30 août 2014, 19:54

Re: [PHP] Configutaion de vhost apache2 avec php-fpm de differente version

Message par papajoke »

steveoriol a écrit : mer. 01 juil. 2020, 15:37 ==> Il manque plus que le switch facile de version de PHP en CLI ...
:o le bug traqueur de archlinux n'est pas un forum ! cette demande n'a pas de sens la bas
  • pas un bug
  • concerne aur et pas archlinux, aur n'est pas archlinux !
Puisque tu dis l'avoir avec ubuntu pourquoi ne pas reprendre le script ? et adapter
sinon il est doit être possible de s'inspirer du swich java qui est en bash

et si tu es plus php, tu peux l'écrire en php :wink:
Arch stable - Kde 5 / zsh - btrfs/mbr - Intel Core i3 - 6Go RAM - GeForce 405 video-nouveau
Avatar de l’utilisateur
steveoriol
newbie
Messages : 9
Inscription : mer. 01 juil. 2020, 11:12
Localisation : Grenoble

Re: [PHP] Configutaion de vhost apache2 avec php-fpm de differente version

Message par steveoriol »

Je suis confus, un peut surpris, je pensais bien faire et apporter une idée (bonne ou pas), mais juste faire avancer les choses...
Je n'ai pas de temps pour le moment et suis pressé par le temps, donc je vais faire les copies des "bin" php en xxxx74 et faire les liens symboliques sur les xxxx72 à la main.
Merci.
Avatar de l’utilisateur
steveoriol
newbie
Messages : 9
Inscription : mer. 01 juil. 2020, 11:12
Localisation : Grenoble

Re: [PHP] Configutaion de vhost apache2 avec php-fpm de differente version

Message par steveoriol »

:) Voilà, J'ai faits un petit script bash qui me permet de changer rapidement de version de PHP (cli), il fonctionne pour le moment pour PHP 8.0 (version actuelle) et php 7.2 (AUR) et php7.3 (AUR), mais il suffira de le compéter pour les autres. J'essaierais de le pkgbuilder pour AUR quand j'aurai un peu de temps.

Fichier : setphpversion a mettre en exécutable (chmod a+x setphpversion) dans un dossier de votre variable d’environnement PATH

Code : Tout sélectionner

#!/bin/bash

if [ "$EUID" -ne 0 ]
  then echo "Please run as root"
  exit
fi

installedphp=`pacman -Qsq "^php[1-9]*$"`

phparray=()
while read -r line
do phparray+=("$line")
done <<<"$installedphp"
#declare -p phparray;


if [ ${#phparray[@]} = 0 ]
then
	echo "Aucun version de PHP est installé..."
	exit
fi

if [ ${#phparray[@]} = 1 ]
then
	echo "Une seul version de PHP est installé : ${phparray[0]}"
	exit
fi


#Vérification des sauvegades de bin de la version courante:
if [ ! -L '/usr/bin/php' -a -f '/usr/bin/php' ]; then
	echo "=> sauvegarde des bin courants"
	mv /usr/bin/php /usr/bin/phpCurrent && ln -s /usr/bin/phpCurrent /usr/bin/php
	mv /usr/bin/php-config /usr/bin/php-configCurrent && ln -s /usr/bin/php-configCurrent /usr/bin/php-config
	mv /usr/bin/php-fpm /usr/bin/php-fpmCurrent && ln -s /usr/bin/php-fpmCurrent /usr/bin/php-fpm
	mv /usr/bin/phpize /usr/bin/phpizeCurrent && ln -s /usr/bin/phpizeCurrent /usr/bin/phpize
fi


echo "La version courant de PHP (cli) est :"
echo ""
php -v
echo ""
echo "Choisisez la version désirée :"

select i in $installedphp; do
        if [ "$i" = 'php' ]; then
                echo "Back to current PHP version !"
		rm /usr/bin/php && ln -s /usr/bin/phpCurrent /usr/bin/php
		rm /usr/bin/php-config && ln -s /usr/bin/php-configCurrent /usr/bin/php-config
		rm /usr/bin/php-fpm && ln -s /usr/bin/php-fpmCurrent /usr/bin/php-fpm
		rm /usr/bin/phpize && ln -s /usr/bin/phpizeCurrent /usr/bin/phpize
                break
        elif [ "$i" = 'php73' ]; then
                echo "Pas encore fait ..."
        rm /usr/bin/php && ln -s /usr/bin/php73 /usr/bin/php
        rm /usr/bin/php-config && ln -s /usr/bin/php-config73 /usr/bin/php-config
        rm /usr/bin/php-fpm && ln -s /usr/bin/php-fpm73 /usr/bin/php-fpm
        rm /usr/bin/phpize && ln -s /usr/bin/phpize73 /usr/bin/phpize
                break
        elif [ "$i" = 'php72' ]; then
                echo "Bonjour PHP 7.2.x"
		rm /usr/bin/php && ln -s /usr/bin/php72 /usr/bin/php
		rm /usr/bin/php-config && ln -s /usr/bin/php-config72 /usr/bin/php-config
		rm /usr/bin/php-fpm && ln -s /usr/bin/php-fpm72 /usr/bin/php-fpm
		rm /usr/bin/phpize && ln -s /usr/bin/phpize72 /usr/bin/phpize
                break
        elif [ "$i" = 'php71' ]; then
                echo "Pas encore fait ..."
                break
        elif [ "$i" = 'php70' ]; then
                echo "Pas encore fait ..."
                break
        elif [ "$i" = 'php56' ]; then
                echo "Pas encore fait ..."
                break
	else
                echo "mauvaise reponse"
        fi
done

echo "La nouvelle version de PHP (cli) est :"
echo ""
php -v

Dernière modification par steveoriol le ven. 29 janv. 2021, 23:36, modifié 1 fois.
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17186
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [PHP] Configutaion de vhost apache2 avec php-fpm de differente version

Message par benjarobin »

Bonjour,
J'ai vraiment du mal à comprendre le besoin. Si tu veux lancer php 7.2, il suffit de lancer l’exécutable php72. Pourvoir faire toute cette gymnastique avec les liens symboliques ?
Par exemple pour lancer python 2 on utilise python2, et pour python 3 on utilise python3. python pointant vers la dernière version...
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Avatar de l’utilisateur
steveoriol
newbie
Messages : 9
Inscription : mer. 01 juil. 2020, 11:12
Localisation : Grenoble

Re: [PHP] Configutaion de vhost apache2 avec php-fpm de differente version

Message par steveoriol »

En fait, je fais la maintenance de plusieurs sites web en PHP dont des sites sous le CMS Drupal sur différentes versions 6, 7, 8 et 9. et il y a une commande incontournable qui s'appelle "drush" qui fonctionne beaucoup mieux en utilisant des versions de PHP pas trop ressentes pour les vieux sites, voir ici ;-)
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17186
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [PHP] Configutaion de vhost apache2 avec php-fpm de differente version

Message par benjarobin »

Je ne vois toujours pas pourquoi tu dois faire tout ceci.
C'est 1000 fois plus simple de créer plusieurs commande drush pour chaque version de php. Ou de lancer drush de cette façon : php72 drush ...
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Avatar de l’utilisateur
steveoriol
newbie
Messages : 9
Inscription : mer. 01 juil. 2020, 11:12
Localisation : Grenoble

Re: [PHP] Configuration de vhost apache2 avec php-fpm de differente version

Message par steveoriol »

Je préfère juste être sûr que l'appelle de commande "php" soit dans la version que je souhaite, drush pourrait lui-même utiliser de commande php ...
et je trouve 1000 fois plus simple d'effectuer 1 fois "setphpcli" pour des 10 dizaines de commandes drush passées par la suite ;-)
Enfin, pour moi, c'est comme ça. je comprends que cela peut être différent pour d'autres personnes.
Répondre