Problème d'incompatibilité entre Apache 2.2.x et PHP 5.1.x

Frédéric Mereu

Ces derniers temps, j'ai remarqué que beaucoup des problèmes liés à Apache étaient dus à l'installation de PHP 5.1.x. En effet, il y a un problème d'incompatibilité entre eux lorsqu'ils sont installés sur Windows ...

- Titre : Problème d'incompatibilité entre Apache 2.2.x et PHP 5.1.x

- Auteur : Frédéric Mereu

- Parution : 6 septembre 2006

- Mise à jour : 6 septembre 2006

- Licence : Copyright ® 2006 freed0. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. Le problème

- II. Les solutions

- II-A. Changer de version

- II-B. Patcher php5apache2.dll

I - Le problème

Les lignes qui suivent ne concernent pas toutes les versions d'Apache et de PHP ! Seuls Apache 2.2.x et PHP 5.1.x installés sur Windows sont concernés par ce qui suit...

Le problème survient à la fin de l'installation de PHP. Après avoir ajouté les lignes nécessaires à l'activation de ce dernier dans httpd.conf, Apache devrait refuser de démarrer. Le message d'erreur est le suivant :

L'erreur vient de la dll de PHP, php5apache2.dll. Nous allons voir comment y remédier.

II - Les solutions

Plusieurs possibilités s'offrent à nous : nous pouvons tout simplement changer la version d'Apache ou encore patcher le fichier défectueux, php5apache2.dll.

II-A - Changer de version

Cette solution peut sembler idiote, mais c'est pourtant la plus simple... La version 2.0.xx d'Apache (actuellement 2.0.59) n'est pas exposée à notre problème. Vous pouvez donc rétrograder vers cette version et l'erreur n'apparaîtra plus ! Le seul inconvénient est que vous ne pourrez pas profiter des nouvelles fonctionnalités apportées à la version 2.2.x, si toutefois vous en faisiez usage.

II-B - Patcher php5apache2.dll

La seconde solution consiste à remplacer le fichier défecteux par un fichier patché. Ce fichier est disponible sur http://www.apachelounge.com.

Vers le milieu de la page, vous trouverez le fichier qui nous intéresse : php5apache2.dll-php5.1.x.zip.

Téléchargez l'archive et extrayez-la. Vous devriez y trouver 4 fichiers : httpd.exe.manifest, php5apache2.dll ainsi que deux fichiers texte.

Les fichiers texte vous expliquent la marche à suivre...

Commencez par remplacer php5apache2.dll dans le dossier où vous avez installé PHP (C:\php5 par défaut). Gardez toujours une copie de l'ancien, on ne sait jamais...

Placez ensuite httpd.exe.manifest aux cotés de httpd.exe dans le dossier bin du répertoire d'Apache (C:\Program Files\Apache Group\Apache2.2\bin\).

Vous devez ensuite compléter httpd.conf pour qu'il prenne PHP en compte, ce que vous devriez déjà avoir fait...
Pour rappel, ces 3 lignes sont :

LoadModule php5_module "C:/php5/php5apache2.dll"
AddType application/x-httpd-php .php
PHPIniDir "C:/php5"

Les chemins dépendent bien évidemment de l'endroit où vous avez installé PHP.

Faites bien la différence entre les slashs / et les antislashs \. Apache et PHP ayant été développés pour Linux, ils utilisent les slashs contrairement à Windows, qui lui utilise les antislashs.

Il ne vous reste plus qu'à relancer Apache pour que les modifications soient prises en compte. Normalement, l'erreur ne devrait plus apparaître... Si toutefois elle ne disparaissait pas, alors vérifiez à nouveau que tout est OK et, si le problème persiste, postez dans la catégorie Apache du forum (https://www.developpez.net/forums/forumdisplay.php?f=205) ou contactez-moi par message privé.