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 ?
Réponses
Trop de publicités?Problèmes :
-
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).
-
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é.
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.
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.
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