php4 et php5 sur le même apache

Publié le par greg

Bonjour à toutes et tous,

Aujourd'hui, une petite feinte pour avoir php4 et php5 sur le même serveur web (en l'occurence ici Apache2). L'astuce consiste à en avoir l'un des deux en CGI (dans notre exemple php4 sera en CGI et php5 en module).

Installez PHP5 comme d'habitude, sous Ubuntu cela se fait en 2 coups de paquets :

dudul47:~/# apt-get install libapache2-mod-php5

Pour tester le bon fonctionnement de notre installation, nous allons créer 2 répertoires sous /var/www, les répertoires site_php4 et site_php5. Dans chacun de ces répertoires, nous allons déposer juste un fichier index.php contenant le code suivant :

<?php phpinfo(); ?>

Créons ensuite les fichier de configuration d'apache pour ces 2 sites :

<VirtualHost *:80>
  ServerName php4.localhost
  DocumentRoot /var/www/site_php4
</virtualHost>

Sauvegardez ce fichier sous /etc/apache/sites-available/site_php4.conf et faîtes la même chose pour site_php5.conf en remplaçant php4 par php5.

Petite commentaire sur le nom du serveur. Je pars du principe que l'installation se fait en local (127.0.0.1) mais il se peut que votre serveur web soit une autre machine. Dans tous les cas, il est nécessaire que le nom donné dans la directive ServerName soit résolu sur le client. Pour cela, utilisez le fichier local de résolution (/etc/hosts sous linux) ou ajoutez une entrée DNS.


Déclarez ces fichiers auprès d'apache

dudul47:~/# a2ensite site_php4.conf
Site site_php4.conf installed; run /etc/init.d/apache2 reload to enable.
dudul47:~/# a2ensite site_php5.conf
Site site_php5.conf installed; run /etc/init.d/apache2 reload to enable.

Redémarrez apache et vous devriez voir dans votre navigateur 2 pages identiques sur les sites : le phpinfo de PHP5. Nous allons maintenant installer php4 et configurer apache pour l'utiliser sur site_php4.

dudul47:~/# apt-get install php4-cgi

Ça, c'est fait. Modifions la configuration du virtualhost site_php4 pour qu'il utilise une CGI quand il rencontre un fichier portant une extension .php

Pour cela, il est nécessaire de charger un module d'Apache permettant la redéfinition d'une action associée à un handler (le module actions).

dudul47:~/# a2enmode actions
Module actions installed; run /etc/init.d/apache2 force-reload to enable.


Modifions le fichier de conf de site_php4.conf

<VirtualHost *:80>
  ServerName php4.localhost
  DocumentRoot /var/www/site_php4
  ScriptAlias /cgi-bin /usr/lib/cgi-bin
  AddHandler x-httpd-php4 .php
  Action x-httpd-php4 /cgi-bin/php4
</VirtualHost>

Reste à redémarrer Apache, rechargez la page et voila !

Une autre page sur le sujet sur le wiki de unelectronlibre.info.  
Publicité

Publié dans geekblog

Pour être informé des derniers articles, inscrivez vous :
Commenter cet article
G
Attention toutefois, l'utilisation de PHP en CGI peut avoir un impact sur l'application, par exemple, tiré de la doc «The HTTP Authentication hooks in PHP are only available when it is running as an Apache module and is hence not available in the CGI version.»
Répondre