apache, php4 et php5

Posté le mercredi 21 mars 2007 à 7 h 41, Read it in english with Google

Installer apache2 se relève relativement simple même si personnellement je n’aime pas trop le système d’administration (module available, fichiers de site etc..). Je préfère avoir tout à un endroit plutôt que de devoir aller chercher le php.ini au fin fond de mon système et de revenir dans le httpd.conf etc…

En même temps j »aurais pu installer une solution toute faite comme XAMP mais au fond j’aime bien que les choses deviennent compliquées, ça me fait du bien de les dresser 😀 Me voila donc avec tout mes paquets apache2 et php5 installé et la je me dit il me faut php4 quand même. Il est vieux, soit, mais encore trop répandu pour être laissé à l’abandon.

Plusieurs solutions s’offrent à moi :

  • j’installe apache et je le lance avec 2 instance sur un port différents et sur chacune un mod php différents,
  • je lance php4 ou php5 en mode cgi et l’autre comme module apache. Et suivant l’extension du fichier ou en ajoutant un htaccess, je règlerais quelle version php je veux utiliser

Je choisi la deuxième solution pour des raisons de performance et de simplicité. Ben oui avoir deux instance d’Apache qui tourne moi ça m’inspire pas, et encore moins mon portable.


Je commence donc par installer php4-cgi : aptitude install php4-cgi

je vais utiliser le module Action qui permet de lancer des script (bash, C …etc) en fonction du script appelé (ici php).
Mais je commence par éditer mon apache2.conf gksu gedit /etc/apache2/apache2.conf

Je rajoute ses lignes quelque part : AddHandler php4-script .php4
Action php4-script /cgi-bin/php4
ça va permettre de définir les fichier *.php4 comme apartenant au type php4-script.
Et le module Action permet de lancer php4 lorsque se type de script est appelé.

Or si vous fouillez bien l’exécutable cgi de php4 ne se trouve pas dans /cgi-bin/ mais dans /usr/lib/cgi-bin/. Vous pouvez bien sur remplacez le chemin mais vous pourrez avoir des problèmes lors d’installations futurs. Vérifier donc simplement que cette ligne est présente quelque part : ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ Par default elle est inclus dans /etc/apache2/sites-available/Default qui est appelé par le apache2.conf, mais je vous suggère de la mettre directement dans ce dernier, sinon vous devrez la rajouter dans chaque fichier de site.

Enfin tout est près, oui c’était long il ne reste plus qu’a faire un petit :a2enmod actions
pour activer le module Action qui ne l’est pas par defaut. Et puis on relance apache :/etc/init.d/apache2 force-reload

Maintenant tout vos script .php4 se lanceront avec l’éxécutable cgi de php4 et il vous suffira de mettre : AddHandler php4-script .php
dans un .htaccess pour que les autres aussi se lance avec php4.

Note:
Si vous avez une erreur 500 à cause du .htaccess s’est parce que vous n’avez pas les droits pour définir AddHandler. Recherchez dans vos fichiers de site (/etc/apache2/sites-available/Default) :
AllowOverride None et remplacer par AllowOverride All
# ou au moin :
AllowOverride AuthConfig
Allez voir la doc pour plus de détail.

4 réponses à “apache, php4 et php5”

  1. Anthony

    Bonjour,

    merci pour ce tuto super…
    j’ai fait l’install sur une ubuntu server 8.10. Mes phpinfo sont bons : php5 par défaut et php4 via htaccess. Par contre, impossible d’afficher mes scripts sous Php4 = page blanche…
    Une idée ?
    merci beaucoup

  2. sissi

    Bonjour,

    j’ai le PHP5 mais j’ai besoin de PHP4,mais sous vista je sais pas quoi faire 🙁

    Merci pour votre aide

  3. James

    Bonjour,

    merci beaucoup pour ce tuto, je peux enfin faire tourner mes script php4 et php5 ensemble.

    j’ai juste un petit soucis, avec l’extension .php4, c’est bien interprété comme du php4, mais quand je mets un fichier htaccess contenant « AddHandler php4-script .php » à la racine d’un virtual host, mes fichiers php passe tout de même en php5…

    mais tout de même, encore MERCI !!!

  4. Mathieu

    Bonjour,

    Merci pour le tuto cela fonctionne aussi chez moi.

    James j’ai le même problème que toi avec le htaccess. Comme si il y avait une directive après le fichier htaccess qui stipulait une interprétation du language en php5…

    Je recherche toujours la solution.

Laissez un commentaire :