Apache en difficulté
Ça fait deux fois que je me fais avoir là dessus au boulot, alors je me suis dit que ça pourrait peut-être servir à quelqu'un de le savoir. Parfois, en chargeant une page du site PHP sur lequel on travaille, on se prend une page blanche dans la figure. Blanche dans le genre "pas de contenu à charger", pas d'erreur rien, aucun message.
Au bout d'un moment, on a quand même remarqué ceci dans les logs d'Apache :

Crash d'un hélicoptère Apache (pour ceux qui n'ont pas compris)
Ne cherchez pas sur Google, vous ne trouverez aucune explication intéressante. En fait ce problème vient presque à chaque fois d'une fonction récursive incorrecte. Si une fonction récursive s'emballe, se met à se rappeler elle-même indéfiniment et qu'en plus elle se charge de pas mal de calculs et/ou d'affichages, vous aurez à coup sûr cette erreur. La solution rapide et efficace, c'est de faire des echo 'debug'; return; dans le code, en partant du haut de la page et en descendant l'arbre d'inclusion petit à petit, jusqu'à trouver l'appel qui fait tout crasher. Le problème étant bien sûr que la fonction ne s'emballe pas forcément dans tous les cas ni sur toutes les pages... donc le débuggage peut s'avérer tordu.
Maintenant, vous saurez.
Testé et approuvé sur Apache 2.2.x, PHP 5.2.x, sous Windows XP (donc probablement tous les Windows) et Unix (Gentoo).
Au bout d'un moment, on a quand même remarqué ceci dans les logs d'Apache :
[notice] Server built: Jan 9 2007 23:17:20Donc en gros :
[notice] Parent: Created child process 2724
[notice] Child 2724: Child process is running
[notice] Child 2724: Acquired the start mutex.
[notice] Child 2724: Starting 250 worker threads.
[notice] Child 2724: Starting thread to listen on port 80.
[notice] Parent: child process exited with status 3221225477 -- Restarting.
[notice] Apache/2.2.4 (Win32) PHP/5.2.3 configured -- resuming normal operations
- On demande la page à Apache
- Quelque chose d'affreux se produit
- Apache crash misérablement
- Apache redémarre tout seul

Crash d'un hélicoptère Apache (pour ceux qui n'ont pas compris)
Ne cherchez pas sur Google, vous ne trouverez aucune explication intéressante. En fait ce problème vient presque à chaque fois d'une fonction récursive incorrecte. Si une fonction récursive s'emballe, se met à se rappeler elle-même indéfiniment et qu'en plus elle se charge de pas mal de calculs et/ou d'affichages, vous aurez à coup sûr cette erreur. La solution rapide et efficace, c'est de faire des echo 'debug'; return; dans le code, en partant du haut de la page et en descendant l'arbre d'inclusion petit à petit, jusqu'à trouver l'appel qui fait tout crasher. Le problème étant bien sûr que la fonction ne s'emballe pas forcément dans tous les cas ni sur toutes les pages... donc le débuggage peut s'avérer tordu.
Maintenant, vous saurez.
Testé et approuvé sur Apache 2.2.x, PHP 5.2.x, sous Windows XP (donc probablement tous les Windows) et Unix (Gentoo).

Dans le même genre, utiliser un module PHP qui n'est pas installé provoque le même symptôme au lieu de faire un bête erreur.
Testé et approuvé sous Debian (PHP 5.2 ; Apache 2.2) avec php_mysql pas installé §
Enregistrer un commentaire
Créer un lien