Plusieurs versions de PHP sur EasyPHP

4 02 2012

Quand on fait du développement web en local avec MAMP, EasyPHP ou encore WAMP, ça peut être pratique de disposer des plusieurs versions de PHP (4, 5.2 et 5.3 notamment).

EasyPHP ne permet pas de switcher entre différentes versions de PHP. Voici donc un petit tuto pour utiliser différentes versions de PHP en parallèle…

Avant tout, il faut savoir qu’il existe 2 façons “d’intégrer” PHP à Apache :

  • Module : PHP est chargé en tant que module Apache (comme le mod_rewrite par exemple).
    Le lien entre Apache et PHP se fait par un «handler». Sous Windows, ce handler est une DLL, et sur Unix c’est un fichier .so.
  • CGI (Common Gateway Interface) : il s’agit d’une interface permettant à Apache de déléguer la réponse à une requête HTTP à un programme, qui peut être un script PERL, un script Python, Ruby ou encore… PHP !
    Apache va en fait exécuter le programme PHP (ex: php.exe sous Windows) en lui passant tout un tas de paramètres relatifs à la requête HTTP.

Dans ce tutoriel, je vais vous présenter les 2 méthodes, qui vous allez le voir présentent chacune des avantages et des inconvénients.

Télécharger & installer PHP

Tout d’abord, allez chercher la version de PHP que vous voulez ajouter à EasyPHP sur le site officiel : http://fr.php.net/releases/.

Pour l’exemple, je prends la dernière version de PHP 4 (php-4.4.9-Win32.zip).

Dézippez l’archive à la racine du dossier d’installation d’EasyPHP : D:\EasyPHP5.2.10. Renommez le dossier avec un nom court, chez moi ça sera php4. Le répertoire D:\EasyPHP5.2.10\php4 contient maintenant PHP 4.

Reste à le connecter à Apache, c’est parti :

Méthode #1 : Module

C’est la méthode utilisée par défaut par EasyPHP pour relier Apache et PHP.

Pour cela vous avez besoin de la DLL (le handler) adaptée à votre version de PHP ET votre version d’Apache.

Normalement, PHP est fourni avec une collection de DLL pour plusieurs versions d’Apache. Ces DLL se trouvent dans le dossier sapi : D:\EasyPHP5.2.10\php4\sapi.

Ces DLL sont toujours nommées de la même manière : {version php}{version apache}.dll. Par exemple, le handler php4apache2.dll permet d’utiliser php4 avec apache2.0.

Seulement voilà, ma version d’EasyPHP utilise Apache 2.2, et la dll php4apache2_2.dll n’est pas dans le dossier sapi.
Mais c’est pas grave, on peut la trouver grâce à l’ami Google : http://www.truefusion.trap17.com/downloads/php4apache2_2.zip.

Il suffit donc de copier la bonne dll à la racine de votre dossier php : D:\EasyPHP5.2.10\php4\php4apache2_2.dll pour ma part.

Maintenant que vous avez copié le handler adapté, le plus dur est fait. Il ne reste plus qu’à éditer le fichier de configuration d’Apache (httpd.conf) pour lui dire de charger PHP 4 à la place de PHP 5 :

Commentez le module actuel pour le désactiver :

# LoadModule php5_module "${path}/php/php5apache2_2.dll"
# PHPIniDir "${path}/apache"

Et ajoutez cette ligne juste en dessous pour charger votre module :

LoadModule php4_module "${path}/php4/php4apache2_2.dll"

Voilà, maintenant ça fonctionne, vous pouvez vérifier le changement de version de PHP avec la fonction phpinfo(). Si vous avez une erreur, c’est probablement que vous n’avez pas choisi la bonne DLL.

Pour revenir à la version d’avant, modifiez httpd.conf pour charger l’ancien module.

L’avantage est que cette solution est simple à mettre en œuvre, et propre.
L’inconvénient, c’est que vous ne pouvez charger qu’un seul module PHP sur un serveur Apache. Pour switcher entre différentes versions de PHP il faut donc arrêter le serveur, modifier sa configuration (httpd.conf) et le relancer.

Méthode #2 : CGI

Seconde méthode maintenant : le script CGI.

Dans ce cas, pas besoin de DLL. Il faut juste définir certains paramètres dans le (ou les) virtualhost dans lequel vous souhaitez utiliser une version spécifique de PHP.

Il faut aussi ajouter la permission au programme php.exe, et définir un ScriptAlias (pour que ça soit plus pratique à écrire) :

ScriptAlias /php4/ "${path}/php4/"

# [...]

<Directory "${path}/php4/">
    <Files "php.exe">
        Allow from all
    </Files>
</Directory>

# [...]

<VirtualHost *:80>
    DocumentRoot "${path}/www"
    ServerName localhost

    AddHandler php4-script .php .html .htm
    Action     php4-script /php4/php.exe
</VirtualHost>

L’avantage de cette seconde méthode est que vous pouvez avoir autant de versions de PHP que vous voulez (même si la configuration est plus complexe), il suffit de créer un Virtualhost à chaque fois.
Pour cela, vous pouvez jouer sur le port par exemple :

  • localhost:80 : php 5.2
  • localhost:804 : php 4
  • localhost:8053 : php 5.3

Par contre je ne sais pas s’il y a des inconvénients au niveau performance, peut-être que CGI est plus lent…

Mais de toute façon ça n’est pas important puisqu’il s’agit d’un serveur de développement, pas d’un serveur de production.


Partager :

Ces icônes sont des liens vers des sites de partage de signet sociaux où les lecteurs peuvent partager et découvrir de nouveaux liens.
  • Digg
  • del.icio.us
  • Facebook
  • Digg -fr
  • Live
  • MisterWong Fr
  • Scoopeo
  • StumbleUpon
  • Technorati
  • Wikio FR

Actions

Informations

Et maintenant je fais quoi ?

Laisser un commentaire

Vous pouvez utiliser ces balises html : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>