N'hésitez pas à me le signaler si nécessaire via le formulaire de contact.
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 webmaster@localhost 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 |
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://:
Pour ma part j’ai suivi à la lettre mais ça ne marche pas, c’est toujours php7 qui est utilisé dans tous les cas :/
Bonjour Fabien,
Quelle est la distribution utilisée ? Avec quelles versions de php ?
Cordialement,
Hervé
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
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 ?
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
Je vais tester à nouveau l’ensemble de la procédure sur une vm.
Je vous tiens informé.
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 ?
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.
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 !
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é