apache, php4 et php5
Posté le Mercredi 21 mars 2007 à 7 h 41, Read it in english with GoogleInstaller 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 ça va permettre de définir les fichier *.php4 comme apartenant au type php4-script.
Action php4-script /cgi-bin/php4
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 Allez voir la doc pour plus de détail.
# ou au moin :
AllowOverride AuthConfig
