Cet article vous explique comment activer l'affichage des erreurs quand vous rencontrez un problème sur votre site Joomla.
Par exemple dans le cas classique de la "page blanche", où plus rien ne s'affiche.
Dans une deuxième partie, on parlera aussi des erreurs provenant des fichiers de traduction.
Et pour terminer, dans une partie réservée aux développeurs d'extensions pour Joomla, j’évoquerai le débogage dans un environnement de développement (IDE : Eclipse, NetBeans ou autres).
Débogage à l’exécution
Si vous avez accès à l'administration
Menu administration : Système > Configuration > onglet Serveur > passez le champ "Rapport d'erreurs" à "Développement".
Actualisez la page où vous rencontrez un problème.
Si vous n'avez plus accès à l'administration
Chercher à la racine de votre site le fichier configuration.php.
Faites en une copie de sauvegarde (en local ou via FTP).
Ouvrez le fichier sur le serveur avec un éditeur (par exemple Notepad++ avec le complément NppFTP)
Chercher la ligne commençant par : public $error_reporting (vers le ligne 21)
Modifiez sa valeur en :
public $error_reporting = 'development';
Attention à l'orthographe anglaise : development entre guillemets simples.
Actualisez la page où vous avez l'erreur
Débogage étendu à l’exécution
Dans certains cas l'étape précédente ne suffit pas pour trouver l'origine d'une erreur.
Il est alors intéressant d'avoir la pile des Appels et d'autres information (requêtes, etc...)
Si vous avez accès à l'administration
Menu administration : Système > Configuration > onglet Système > passez le champ "Débogage système" à "OUI".
Actualisez la page où vous rencontrez un problème.
Si vous n'avez plus accès à l'administration
Chercher à la racine de votre site le fichier configuration.php.
Faites en une copie de sauvegarde (en local ou via FTP).
Ouvrez le fichier sur le serveur avec un éditeur (par exemple Notepad++ avec le complément NppFTP)
Chercher la ligne commençant par : public $debug = ; (vers la ligne 10)
Modifiez sa valeur en :
public $debug = '1';
Actualisez la page où vous avez l'erreur
Débogage des traductions
Si vous avez des choses bizarres qui s'affichent à la place des textes, il doit y avoir un problème dans vos fichiers de traduction.
Si vous avez accès à l'administration
Menu administration : Système > Configuration > onglet Système > passez le champ "Débogage de langues" à "OUI".
Actualisez la page où vous rencontrez un problème.
Si vous n'avez plus accès à l'administration
Ce cas ne devrait pas arriver, sauf si vous ne comprenez rien à ce qui est affiché.
Chercher à la racine de votre site le fichier configuration.php.
Faites en une copie de sauvegarde (en local ou via FTP).
Ouvrez le fichier sur le serveur avec un éditeur (par exemple Notepad++ avec le complément NppFTP)
Chercher la ligne commençant par : public $debug_lang = ; (vers la ligne 11)
Modifiez sa valeur en :
public $debug_lang = '1';
Actualisez la page où vous avez l'erreur
Débogage lors du développement d'extensions pour Joomla
Joomla 3
Pour faciliter le débogage sous les version récentes de Joomla (3.7 et +), je préconise de :
- placer un point d’arrêt, dans /plugin/system/redirect/redirect.php à la liste 84 (méthode handleException).
En affichant de contenue de la variable $exception vous aurez un peu plus d'information que le fenêtre d'erreur, qui se veut volontairement pas trop bavarde en production. - placer un point d’arrêt dans /librairies/src/Exception/ExceptionHandler.php ligne 31 (méthode render)
- activer le débogage système pour avoir la pile des appels système > configuration > onglet système > débogage système (attention peut provoquer un dépassement de mémoire dans certains cas).
Joomla 4
- placer un point d’arrêt dans /librairies/src/Exception/ExceptionHandler.php ligne 87 (méthode render)
- placer un point d'arret dans /librairies/vendor/symphony/error-handler/ErrorHandler.php ligne 556 (méthode handleException)
Attention : voir remarque ci-dessous. - Pour trouver les erreur de routage (url rompues) :
placer un point d'arret dans /librairies/src/Router/Router.php ligne 156 (méthode parse).
Remarque concernant les points d'arret
Placer bien les points d’arrêt sur une ligne de code exécutable.
Ne les placez pas sur un "try" par exemple, car il risque de na pas être interprété.