SPIP & Apache segmentation fault

Petit note rapide pour faire part de ma découverte.

J’ai voulu déplacer un SPIP d’une machine à une autre. Je copie donc une partie des fichiers (quasiment tout sauf CACHE), et de la base de données.
Tout se déroule plutôt bien, j’ai accès au site, je peux naviguer, tout à l’air correct.

Je décide donc de me rendre sur la page du backoffice ( url : /ecrire/ ), mais là … c’est long à venir, puis le apache me propose de télécharger le fichier « spip.php ». Je regarde naturellement les logs, et là je vois :

[notice] child pid 16665 exit signal Segmentation fault (11)

Oui oui, le fils apache a fait une segfault. Stupeur !
Je cherche un peu partout, le mod_php c’est bon, le php tourne correctement ailleurs, le htaccess est ok, le mod_rewrite enabled, ya bien les droits sur les fichiers, il peut écrire son cache etc.

Je strace le fils apache (strace -f apache2ctl start) et commence à comprendre qu’il y a, en fait, une sorte de boucle infinie de je ne sais quoi.
Je me retrouve donc à parcourir step by step le code exécuté, pour comprendre qu’en fait spip fait des inclusions récursives.

Le fin mot de l’histoire c’est que j’avais oublié un répertoire : le « formulaires/ », du coup lors de l’affichage du formulaire de login du backoffice, il manque un fichier d’inclusion de formulaire, et cela redirige vers une page d’erreur 404 … qui elle-même inclus une page de formulaires/ et qui donc génère une erreur 404 … etc. Donc boucle infinie, et le fils apache qui s’étrangle.

Voilà, dès que j’ai remis le formulaires/ et supprimé les fichiers CACHE/* tout est rentré dans l’ordre.

Bon mais sinon SPIP ca a des très bons côtés, faut juste pas trop lui supprimer ses fichiers, sinon il meurt plutôt que de râler. 🙂

Print Friendly

Laisser un commentaire