Plusieurs versions de php sous Apache avec php-fpm

Faire cohabiter plusieurs sites web avec des versions php différentes sur un même serveur avec php-fpm.

Pour illustrer la démarche, les exemples se font sur une distribution Debian 9 avec les versions 7.0 et 5.6 de PHP.

Installation

Installation d'Apache :

apt install apache2

Installation de plusieurs versions de php (ici 7.0 et 5.6) :

# installation php v 7.0
apt install php php-fpm
# installation php v 5.6
apt-get install apt-transport-https lsb-release ca-certificates
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php5.6.list
apt-get update
apt-get install php5.6 php5.6-fpm

Lancer les services php-fpm :

service php7.0-fpm start
service php5.6-fpm start

Paramétrage

Activer le mode proxy FastCGI d'Apache :

a2enmod proxy_fcgi

Le site web en 5.6 /etc/apache2/sites-available/site-5.6.conf :

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName test56.mikael-flora.fr

    DocumentRoot /var/www/test56

    ErrorLog ${APACHE_LOG_DIR}/test-5.6-error.log
    CustomLog ${APACHE_LOG_DIR}/test-5.6-access.log combined

    <Directory /var/www/test56/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Require all granted
    </Directory>

    <FilesMatch ".+\.ph(p[3457]?|t|tml)$">
        SetHandler "proxy:unix:/run/php/php5.6-fpm.sock|fcgi://localhost"
    </FilesMatch>

</VirtualHost>

Le site web en 7.0 /etc/apache2/sites-available/site-7.0.conf :

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName test70.mikael-flora.fr

    DocumentRoot /var/www/test70

    ErrorLog ${APACHE_LOG_DIR}/test-7.0-error.log
    CustomLog ${APACHE_LOG_DIR}/test-7.0-access.log combined

    <Directory /var/www/test70/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Require all granted
    </Directory>

    <FilesMatch ".+\.ph(p[3457]?|t|tml)$">
        SetHandler "proxy:unix:/run/php/php7.0-fpm.sock|fcgi://localhost"
    </FilesMatch>

</VirtualHost>

Activers les VirtualHosts :

a2ensite test-5.6
a2ensite test-7.0

Prendre en compte les changements :

service apache2 restart

Test

Créer les répertoires :

mkdir /var/www/test56 /var/wwww/test70

Dans chaque répertoire placer un fichier info.php :

<?php
  phpinfo();

Se connecter sur les sites web et vérifier la version de php. Par exemple pour le site web en version 5.6 :

  • PHP Version : 5.6.37-1+0~20180910100434.3+stretch~1.gbp606419
By @Mikael FLORA in
Tags : #apache, #php, #web,