Comment déboguer une erreur 500 ou une page blanche dans PrestaShop
Un écran blanc ne donne aucun indice, mais il laisse toujours une trace. Voici l'ordre dans lequel nous cherchons la cause quand une boutique tombe.
Peu de choses font plus peur que d'ouvrir sa boutique et de voir une page blanche ou un laconique « 500 Internal Server Error ». La bonne nouvelle : la cause est presque toujours écrite quelque part. Voici l'ordre dans lequel nous la cherchons.
1. Qu'est-ce qui a changé ?
Avant de toucher à quoi que ce soit : un module a-t-il été installé ou mis à jour ? La version de PHP de l'hébergement a-t-elle changé ? Un fichier a-t-il été téléversé ? 80 % des pannes coïncident avec un changement récent. S'il y en a un, vous tenez votre premier suspect.
2. Activez le mode debug (avec prudence)
Dans config/defines.inc.php :
define('_PS_MODE_DEV_', true);
En mode debug, PrestaShop affiche l'erreur complète à l'écran au lieu d'une page vide. Ne le faites que le temps strictement nécessaire : le message peut révéler des chemins du serveur à n'importe quel visiteur. Si possible, reproduisez le problème sur une copie de la boutique plutôt qu'en production.
3. Lisez les journaux
var/logs/: les journaux de PrestaShop et de Symfony (prod-AAAA-MM-DD.log). CherchezCRITICALetERROR.- Le journal des erreurs PHP de l'hébergement (dans cPanel, généralement dans Métriques > Erreurs ou dans un
error_logà la racine). - Le journal du serveur web, si la page n'atteint même pas PHP.
grep -E "CRITICAL|ERROR" var/logs/prod-$(date +%F).log | tail -20
4. Écartez les modules et les overrides
Dans Paramètres avancés > Performances, vous pouvez désactiver temporairement les modules non natifs et les overrides. Si la boutique revient, la cause se trouve dans l'un d'eux : réactivez-les par moitiés jusqu'à le trouver.
active de la table module ne suffit pas ; ce qui décide si un module s'exécute, c'est sa ligne dans module_shop.5. Videz le cache, mais correctement
Supprimez le contenu de var/cache/prod et de var/cache/dev, pas le dossier var/cache entier : dans certaines versions, il contient un fichier de paramètres dont PrestaShop a besoin pour démarrer.
6. Les pages « blanches avec un 200 »
Ce sont les plus traîtres : le serveur répond correctement mais il n'y a aucun contenu. Les causes que nous voyons le plus :
- Un module ou un pare-feu au niveau PHP qui interrompt la requête avec
exit. - Une fonction qui n'existe pas dans le PHP du serveur. Par exemple, générer des miniatures en AVIF alors que la bibliothèque GD ne prend pas ce format en charge.
- Mémoire épuisée lors de la génération d'une page très lourde.
Il est alors très utile d'exécuter la page en ligne de commande avec un auto_prepend_file qui enregistre, à la fin, les derniers fichiers chargés : il vous dit exactement où l'exécution s'est arrêtée.
7. Une fois trouvé
Corrigez, désactivez le mode debug, videz le cache et notez ce qui s'est passé. La prochaine fois, quelqu'un le résoudra en cinq minutes au lieu d'un après-midi.