Magento page blanche – comment débugger

J’ai récemment été confronté à un problème lors du développement d’un module Magento… La page blanche, pas celle liée à mon manque d’inspiration, mais la fameuse WSOD (White Screen Of Death soit la page blanche de la mort).

Magento le syndrome de la page blanche

En fait sur ma machine en local, le module fonctionnait bien, le problème était au niveau de la mise en place sur le serveur de production… Toutes les pages que mon plugin devait afficher en Administration, retournait une page blanche.

Après plusieurs tests et de nombreuses heures de recherches et de tests j’ai pu résoudre le problème.

Le souci avec ce type d’erreur, c’est qu’aucune erreur ne s’affiche dans les logs donc il est très difficile d’en déceler la cause. J’ai décidé de compiler ici toutes les actions pouvant vous aider à résoudre ce problème.

PHP Activer le output_buffering

Je vous mets en premier la solution qui m’a sauvée.

Activer le output buffering dans le PHP.ini :

output_buffering=On

Et reloadez apache
Ou dans Cpanel, cela peut s’ajouter directement dans « MultiPHP INI Editor » / « Editor mode ».

Merci à ce contributeur d’avoir répondu sans qui je n’aurais certainement pas encore trouvé la solution.

Activer l’affichage des erreurs

C’est certainement la première chose à faire pour se faire :

  1. Dans le fichier app/bootstrap.php décommentez la ligne :
    ini_set('display_errors', 1);
  2. Au besoin, activez l’affichage d’erreur au niveau de votre php.ini :
    display_errors=On

    Et reloadez apache.

Passez votre instance Magento en mode « developer »

Vous pouvez voir dans quel mode est déployé votre instance avec cette commande (à exécuter dans le répertoire racine de votre Magento) :

php7.1 bin/magento deploy:mode:show

Si vous n’êtes pas en mode développeur, exécutez cette commande :

php7.1 bin/magento deploy:mode:set developer

Ce mode devrait éventuellement vous apporter des informations sur l’origine de votre problème.

Supprimer le cache Magento

Pour supprimer le cache, exécutez cette commande :

php7.1 bin/magento cache:flush

Appliquer les bons droits

Il est possible que vous ayez des droits incohérents au niveau de vos fichiers.

Pour régler cela éxecutez ces différentes commandes :

cd /home/[USERNAME]/public_html 

find . -type f -exec chmod 644 {} \;

find . -type d -exec chmod 755 {} \;                       

find ./var -type d -exec chmod 777 {} \;

find ./pub/media -type d -exec chmod 777 {} \;

find ./pub/static -type d -exec chmod 777 {} \;

chmod 777 ./app/etc

chmod 644 ./app/etc/*.xml

chown -R :[GROUP_WEB_SERVER] .

chmod u+x bin/magento

Voir ce post pour plus de détail : https://magento.stackexchange.com/a/95033/73112.

Compiler votre application

Exécutez cette commande :

php7.1 bin/magento setup:di:compile

Cette commande va générer l’ensemble des classes définit dans le fichier di.xml de votre module ou de votre thème. Certaines erreurs peuvent ressortir lors de l’execution de cette commande, il s’agit souvent d’un souci de formatage de votre fichier di.xml qui n’est pas valide.

Lire les logs Magento

Magento génère un certain nombre de fichier de logs qui peuvent également contenir des messages d’erreurs pouvant potentiellement vous aider à régler votre problème :

  • var/log/debug.log
  • var/log/exception.log
  • var/log/system.log

S’armer de patience

Oui parfois quand vous avez explorer toutes les pistes que vous avez envisagez, faites un tour, prenez l’air, allez dormir, pensez à autre chose et revenez-y plus tard. Au besoin, posez vos questions sur Stack.

Si vous avez d’autres suggestions pour débugger sous Magento, postez les en commentaires.

Bon courage 😉