77 votes

Comment avoir deux versions de PHP installées et passer facilement de l'une à l'autre ?

Je veux avoir à la fois PHP 5.2.17 et PHP 5.3.5 installés sur ma machine Ubuntu et changer selon mes besoins. Comment puis-je réaliser cela ?

2voto

Anh Do Points 4677

Problèmes :

  1. Une seule instance d'apache ne peut pas faire tourner simultanément deux versions différentes de PHP (du moins pour autant que je le sache).

  2. Deux versions différentes de PHP ne peuvent pas être installées à partir de paquets car elles entreraient en conflit (et tenteraient d'écraser les mêmes répertoires).

Solution :

  • pour b) Compiler "l'autre" version de PHP à partir des sources, manuellement (ou si vous préférez, récupérer les sources du paquetage approprié et les modifier pour éviter les conflits et modifier les chemins d'installation)

  • pour a) Créer un ensemble séparé de configs pour apache avec des chemins de modules différents et un script de démarrage séparé. Et bien sûr l'exécuter sur un port séparé.

1voto

Rohan Kumar Points 561

Au lieu de faire plusieurs VirtualHost J'ajoute simplement le code ci-dessous dans mon .htaccess et, étonnamment, cela a fonctionné,

<FilesMatch \.php$>
    SetHandler "proxy:unix:/var/run/php/php7.2-fpm.sock|fcgi://localhost/"
</FilesMatch>

Node : J'avais déjà installé php7.2-fpm avant d'utiliser le code.

0voto

Martin Ueding Points 7828

Si vous voulez les exécuter en même temps, vous avez besoin de deux ports différents. Peut-être pouvez-vous simplement modifier la configuration d'apache (httpd.conf) avec un simple script qui déplace l'une ou l'autre version dans la position correcte avant de démarrer apache.

0voto

ezpz Points 5273

Vous pouvez également gérer chaque site web avec diferentes utilisateurs. Plus sûr.

J'ai utilisé cette approche une fois.

http://blog.servergrove.com/2011/08/22/how-to-setup-multiple-php-versions-on-apache/

Maintenant je pense qu'il est préférable d'utiliser php-fpm... mais c'est un peu plus compliqué de configurer plusieurs versions de php.

Il faudra faire tourner plusieurs php-fpms et configurer apache pour qu'il utilise les autres.

0voto

Growling Flea Points 21

J'ai écrit un bash script qui me permet de basculer facilement entre les versions de php installées sur ma boîte. Je fais tourner plusieurs hôtes virtuels parce que j'ai plusieurs projets web avec des clients qui ont des programmes anciens et nouveaux. Certains de ces projets nécessitent des versions plus anciennes de php et d'autres projets nécessitent php7.0.

Lisez mes commentaires et assurez-vous de bien comprendre ce qui se passe avant de l'utiliser.

#!/bin/bash
# This file is for switching php versions.  
# To run this file you must use bash, not sh
# 
# OS: Ubuntu 14.04 but should work on any linux
# Example: bash phpswitch.sh 7.0
# Written by Daniel Pflieger
# growlingflea at g mail dot com

NEWVERSION=$1  #this is the git directory target

#get the active php enabled mod by getting the array of files and store
#it to a variable
VAR=$(ls /etc/apache2/mods-enabled/php*)

#parse the returned variables and get the version of php that is active.
IFS=' ' read -r -a array <<< "$VAR"
array[0]=${array[0]#*php}
array[0]=${array[0]%.conf}

#confirm that the newversion veriable isn't empty.. if it is tell user 
#current version and exit
if [ "$NEWVERSION" = "" ]; then
echo current version is ${array[0]}.  To change version please use argument
exit 1
fi 

OLDVERSION=${array[0]}
#confirm to the user this is what they want to do
echo "Update php"  ${OLDVERSION} to ${NEWVERSION}

#give the user the opportunity to use CTRL-C to exit ot just hit return
read x

#call a2dismod function: this deactivate the current php version
sudo a2dismod php${OLDVERSION}

#call the a2enmod version.  This enables the new mode
sudo a2enmod php${NEWVERSION} 

echo "Restart service??"
read x

#restart apache
sudo service apache2 restart

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X