Plusieurs versions de PHP sur un même serveur

Via Nexen.net, je suis tombé sur deux articles traitant de l'installation de deux versions (ou plus de PHP) sur un même serveur Apache :

Dans mon esprit, le fait d'avoir deux installations de PHP en parallèle sert à pouvoir tester et rendre portables ses développements afin de rendre un déploiement facile et sans surprise. Le but est donc de passer d'une version de PHP à l'autre rapidement pour un même script afin de voir les éventuels problèmes ou différences de comportement (je suis assez adepte du Ctrl + Tab sous Firefox).

Ce qui me chagrine dans les deux articles précédent est que pour l'un on utilise deux services différents pour Apache et on passe d'une version à l'autre de PHP en arrêtant le service avec PHP4 et en lançant celui avec PHP5. Cela ne me semble pas très pratique du point de vue rendement et rapidité de développement surtout si l'on teste son application au fur et à mesure de la construction des scripts et non pas une fois tout fini. Le deuxième article est le pire à mon sens car il joue sur l'extension de fichiers pour passer de l'une à l'autre des versions avec par ex .php pour PHP5 et .php4 pour PHP4 ; je n'imagine même pas comment il fait pour éviter de renommer ou dupliquer ses scripts... peut-être avec de l'url rewriting ?

Pour m'être penché sur la question et avoir écrit un article là-dessus il y a quelques temps (indisponible pour le moment), j'en suis arrivé à la configuration suivante : une version de PHP installée en tant que module pour le site par défaut d'Apache et une autre version installée en CGI mais dans un VirtualHost, ce qui permet de conserver la même extension et de ne pas relancer sans cesse les services pour passer d'une version à l'autre (le VirtualHost peut être basé sur un nom de domaine, IP ou numéro de port - c'est cette dernière solution que j'utilise au quotidien).

En supposant que vous venez d'installer Apache, voici la marche à suivre (sous Windows) :

  • Décompressez l'archive de PHP4 dans le répertoire de votre choix (C:/php/php4 par exemple) ;
  • Placer votre fichier php.ini dans le répertoire contenant l'exécutable d'Apache (Apache.exe) ;
  • Ajouter les lignes suivantes à la fin votre fichier httpd.conf :
    LoadModule php4_module “C:/php/php4/php4apache.dll”
    AddType application/x-httpd-php .php
  • Décompressez l'archive de PHP5 dans C:/php/php5 ;
  • Ajouter les lignes suivantes à la fin de votre fichier httpd.conf :
    Listen 81
    NameVirtualHost *:81
    <VirtualHost *:81>
        SetEnv PHPRC "C:/php/php5"
        ScriptAlias /php5/ "C:/php/php5"
        Action     php5-script /php5/php-cgi.exe
        AddHandler php5-script .php
    </VirtualHost>
  • Remplacer la ligne Port 80 par Listen 80 dans votre fichier httpd.conf.

En lançant ou relançant Apache, vous devriez maintenant avec les deux versions de PHP en même via les adresses alhost/ pour PHP4 et http://localhost:81 pour PHP5.

Posté le Thursday 08 December 2005 dans , .

Commentaires

Ajouter un commentaire

Il n'est plus possible de réagir à cette entrée directement mais si vous pensez que votre intervention peut être intéressante, envoyez-moi votre commentaire, je l'ajouterai ici en votre nom.