Un petit article pour présenter comment installer plusieurs versions de php en simultané sur votre serveur dédié.
Ceci peut notamment être utile si vous hébergez plusieurs sites sur votre serveur dédié et qu’ils n’ont pas les mêmes prérequis techniques.
En utilisant apache et php-fpm et c’est très facile et rapide à mettre en place.
Pour notre exemple je souhaite installer php 5.6 et php 7.0 en simultané.
#Pour commencer installer apache apt-get install apache2 libapache2-mod-fastcgi #Activativation des mode actions fastcgi et alias pour apache2 a2enmod actions fastcgi alias #Ajouter le ppa Ondrej add-apt-repository ppa:ondrej/php #Update des packet apt-get update #Installer PHP 7 + extensions de base apt-get install php7.0-fpm php7.0-xml php7.0-gd php7.0-mcrypt php7.0-mysql php7.0-pdo #Installer PHP 5.6 + extensions de base apt-get install php5.6-fpm php5.6-xml php5.6-gd php5.6-mcrypt php5.6-mysql php5.6-pdo |
Partant du principe que la version par défaut sera php 7.0,
On va ensuite configurer phpfpm 5.6 pour une exécution à la demande en éditant son fichier de configuration
vim /etc/php/5.6/fpm/pool.d/www.conf |
changer la ligne pm comme ceci :
pm = ondemand |
La base est à présent installée, maintenant vous pouvez éditer vos fichiers de configuration de la manière suivante.
#Editer le fichier de configuration pour tester le fonctionnement <VirtualHost *:80> ServerName www.example.com ServerAdmin [email protected] DocumentRoot /var/www/html <Directory /usr/lib/cgi-bin> Require all granted </Directory> #PHP7 ( Actif ) <IfModule mod_fastcgi.c> AddHandler php7-fcgi .php Action php7-fcgi /php7-fcgi virtual Alias /php7-fcgi /usr/lib/cgi-bin/php7-fcgi FastCgiExternalServer /usr/lib/cgi-bin/php7-fcgi -socket /var/run/php/php7.0-fpm.sock -pass-header Authorization </IfModule> #Décommenter pour activer PHP 5.6 #<IfModule mod_fastcgi.c> #AddHandler php5.6-fcgi .php #Action php5.6-fcgi /php5.6-fcgi virtual #Alias /php5.6-fcgi /usr/lib/cgi-bin/php5.6-fcgi #FastCgiExternalServer /usr/lib/cgi-bin/php5.6-fcgi -socket /var/run/php/php5.6-fpm.sock -pass-header Authorization #</IfModule> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> |
Vous pouvez ensuite en fonction de vos besoins spécifier la version de php à utiliser sur chacun de vos vhosts.
Redémarrer apache2 pour prendre en compte la configuration
service apache2 restart |
janvier 12th, 2017
Hello,
Excellent article. En revanche le ppa Ondrej ne semble pas exister:
add-apt-repository ppa:ondrej/php
ERROR: ‘~ondrej’ user or team does not exist.
Erreur : « ppa:ondrej/php » non valide
Merci de votre aide
Edit :
Désolé, c’était un problème de proxy, résolu en exportant ces deux variables:
export http_proxy=http://:
export https_proxy=http://:
juillet 12th, 2017
Pour ma part j’ai suivi à la lettre mais ça ne marche pas, c’est toujours php7 qui est utilisé dans tous les cas :/
juillet 13th, 2017
Bonjour Fabien,
Quelle est la distribution utilisée ? Avec quelles versions de php ?
Cordialement,
Hervé
février 25th, 2018
Bonjour,
J’ai le même problème que Fabien, seulement php7.0 est prit en compte, avec Linux Mint 18.2 (Ubuntu 16.04) php5.6 + 7.0
février 25th, 2018
Bonjour,
Merci pour votre retour,
Est-ce que vous décommentez bien la ligne pour les vhost concernés ?
Que renvoie la commande php5 -v en console ?
février 26th, 2018
Oui j’ai bien décommenté le bloc et relancer apache
php5.6 -v me renvoie :
PHP 5.6.33-3+ubuntu16.04.1+deb.sury.org+1 (cli)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies
février 27th, 2018
Je vais tester à nouveau l’ensemble de la procédure sur une vm.
Je vous tiens informé.
février 27th, 2018
Je vous confirme que de mon côté tout fonctionne correctement sur une nouvelle instance.
Est-ce que vous voyez bien les 2 versions de php-fpm qui tournent si vous faites un htop ?
février 28th, 2018
J’ai trouvé le pb, je ne suis pas parti d’une install vierge, il fallait juste désactiver le mod php7.0 qui prenait le dessus.
Merci d’avoir prit un peu de temps pour me dépanner.
juillet 11th, 2018
Bonjour,
j’ai également essayé de faire fonctionner deux versions (7.1 et 5.6), la 5.6 étant pour un seul projet en particulier.
J’ai suivi l’explication, j’ai bien une commande « php5.6 » dont la version est bien php5.6 et j’ai modifié mon host comme indiqué.
Mais je suis toujours sur php7.1 sur ce host-là.
J’ai pas eu d’erreur en redémarrant apache, donc il n’y a, a priori, pas d’erreur de syntaxe dans mon fichier de conf.
Une piste ?
Merci !
juillet 13th, 2018
Bonjour,
Est-ce que vous utilisez bien le mode fastcgi ?
Est-ce qu’apache était déjà installé dans un autre mode ?
L’erreur peut être liée.
Cordialement,
Hervé