Débogage

Les messages de débogage peuvent être activés par un administrateur depuis Administration > Administration du site > Développement > Débogage.

Les messages de débogage sont destinés à aider à diagnostiquer les problèmes et / ou à aider les développeurs de Moodle. Si vous rencontrez un problème avec votre site Moodle et demandez de l'aide dans un forum Moodle.org, on peut vous demander d'activer les messages de débogage afin de localiser la cause du problème. Par défaut, Moodle n'affiche aucun message d'erreur. Si vous rencontrez des problèmes (par exemple, des écrans vides ou des écrans incomplets), activer le débogage est généralement la première chose à faire.

Paramètres de débogage

Voici les paramètres de la page de débogage :

Messages de débogage

La valeur par défaut est "Aucun", vos choix sont les suivants :

AUCUN 
Ne pas afficher d'erreurs ou d'avertissements (par défaut)
MINIMAL 
Afficher uniquement les erreurs fatales
NORMAL 
Afficher les avertissements, les erreurs et les avis
TOUT 
Afficher tous les messages de débogage PHP
DÉVELOPPEUR 
Messages de débogage supplémentaires pour les développeurs

Il y a rarement un avantage à aller au niveau développeur, à moins d'être un développeur, auquel cas c'est fortement recommandé.

Une fois que vous avez obtenu le message d'erreur, et l'avez copié et collé quelque part, il est fortement recommandé de remettre l'affichage à Aucun : les messages de débogage peuvent donner des indices à un pirate informatique quant à la configuration de votre site.

Afficher les informations de débogage

Il y a une option pour choisir d'afficher les messages d'erreur ou simplement les enregistrer dans les logs du serveur.

Débogage de l'envoi des courriels

Détermine l'affichage d'informations de débogage détaillées lors de l'envoi de courriels au serveur SMTP.

Plus d'outils pour le débogage des courriels sortant

Vous pouvez également utiliser le fichier config.php pour activer d'autres «outils» qui vous aideront à déboguer les courriels sortants (et la configuration du serveur SMTP) :

  • Rediriger tous les courriels sortants vers une adresse spécifique :
// Divert all outgoing emails to this address to test and debug emailing features
// $CFG->divertallemailsto = 'root@localhost.local'; // NOT FOR PRODUCTION SERVERS!
// Force developer level debug and add debug info to the output of cron
// $CFG->showcrondebugging = true;

Puis utilisez SSH (ou putty.exe, sur Windows) pour exécuter :

vous@serveur-moodle(/var/www/html/moodle)# php admin/cli/cron.php
  • Activez le débogage SMTP détaillé et envoyez le résultat sur le fichier système error_log (via modification de code) :
Comme suggéré sur une discussion de forum, ouvrez lib/moodlelib.php (ligne 5573 pour Moodle 3.2), cherchez la partie comportant
if (!empty($CFG->debugsmtp))
et modifiez la pour ajouter
$mailer->Debugoutput = "error_log";
.

Cela donnerait :

if (!empty($CFG->debugsmtp)) {
    $mailer->SMTPDebug = 1;  // 0 - no debug ... 4 - low level full debug
    $mailer->Debugoutput = "error_log";
}

Vous trouverez plus d'informations sur les paramètres SMTPDebug et Debugoutput.

Débogage des requêtes SQL

Vous pouvez ajouter (activer) l'une des options suivantes de dboptions dans votre fichier de configuration config.php, qui enregistre différents types de requêtes SQL dans la table mdl_log_queries table :

  • logall - enregistre toutes les requêtes - uniquement pour les développeurs, car créé de fortes charges serveur et n'est PAS recommandé en production
  • logslow - enregistre les requêtes durant plus qu'un nombre spécifique de secondes (les nombres à virgule sont acceptés)
  • logerrors - enregistre les requêtes en erreur

Exemple complet :

$CFG->dboptions = array (
  //'logall'   => true,
  'logslow'  => 5,
  'logerrors'  => true,
);

Informations de performance

L'option informations de performance détermine si les informations de performance seront incluses dans le pied de page du thème standard (et d'autres thèmes). L'information sur la performance comprend le temps de chargement de la page, la quantité de mémoire utilisée pour générer la page, l'utilisation du processeur, la charge et le ratio d'utilisation de mémoire cache d'enregistrement.

Si vous ajoutez :

define('MDL_PERF', true);
define('MDL_PERFDB', true);
define('MDL_PERFTOLOG', true);
define('MDL_PERFTOFOOT', true);

à votre fichier de configuration config.php, il comptera également les requêtes de base de données. Cela doit être dans config.php, car Moodle commence à faire des requêtes en base de données avant de charger les informations de configuration dans la base de données !

Pour cacher les informations de performance aux utilisateurs ordinaires, lisez la discussion Performance info only for admins? (en anglais).

Afficher l'origine des chaînes de caractères

Permet d'aider à la traduction et la personnalisation de la langue. Parfois le code
?strings=1
doit être ajouté (s'il n'y a pas déjà de paramètre), ou
&strings=1
(après d'autres paramètres). Voir l'article Wikipedia Chaîne de requête pour plus de détails.

Afficher les liens de validation W3C

Soyez prudent, lisez l'avertissement.

Afficher les informations sur la page

Pour afficher les informations de page dans le pied de page.

Que faire si vous n'arrivez pas à obtenir la page d'administration du débogage

Si l'erreur vous empêche même d'ouvrir la page d'administration permettant d'activer le débogage, vous pouvez l'activer manuellement.

Essayez de saisir l'URL directe

Les paramètres de débogage se trouvent à l'URL
http://.../admin/settings.php?section=debugging
sur votre serveur. Parfois, cette URL fonctionnera, même si les pages que vous devez utiliser pour y arriver (par exemple la page d'accueil du site) ne fonctionnent pas. Cela vaut donc la peine d'essayer de saisir cette URL directement.

Dans le fichier config.php

Dans le fichier de configuration config.php, vous pouvez insérer quelques lignes en utilisant les informations de la Section 7 du fichier config-dist.php pour activer le débogage pour tout le monde, ou l'activer uniquement pour certains utilisateurs.

Voila ce que l'on trouve en Section 7 du fichier config-dist.php :

//=========================================================================
// 7. SETTINGS FOR DEVELOPMENT SERVERS - not intended for production use!!!
//=========================================================================
//
// Force a debugging mode regardless the settings in the site administration
// @error_reporting(E_ALL | E_STRICT); // NOT FOR PRODUCTION SERVERS!
// @ini_set('display_errors', '1');    // NOT FOR PRODUCTION SERVERS!
// $CFG->debug = (E_ALL | E_STRICT);   // === DEBUG_DEVELOPER - NOT FOR PRODUCTION SERVERS!
// $CFG->debugdisplay = 1;             // NOT FOR PRODUCTION SERVERS!
//
// You can specify a comma separated list of user ids that always see
// debug messages, this overrides the debug flag in $CFG->debug and $CFG->debugdisplay
// for these users only.
// $CFG->debugusers = '2';

Pensez à enlever (ou commenter, avec // en début de ligne) ces lignes lorsque vous avez fini de diagnostiquer votre problème.

ATTENTION : n'essayez pas de modifier la table de base de données de configuration directement ; cela ne fonctionnera pas car les valeurs sont mises en cache dans MUC !

Par exemple, vous pouvez ajouter au fichier moodle/config.php ces lignes pour activer le mode débogage pour développeur :

$CFG->debug = 32767; 
$CFG->debugdisplay = 1;

Les différentes valeurs possibles (de "pas de débogage" à "développeur") sont : 0, 5, 15, 30719 et 32767. Dans les versions plus anciennes de Moodle, on pouvait utiliser pour valeur 2047 ou 6143.

Pour désactiver le débogage, utilisez la page d'administration, ou utilisez la valeur 0 pour debug et debugdisplay.

Dans la base de données

Si vous n'avez vraiment pas d'autre solution (pas d'accès au fichier de configuration, ni à votre plateforme), vous pouvez utiliser un accès direct à la base (en ligne de commande), ou un outil comme phpMyAdmin, pour exécutez les commandes SQL suivantes :

UPDATE mdl_config SET VALUE = 32767 WHERE name = 'debug';
UPDATE mdl_config SET VALUE = 1     WHERE name = 'debugdisplay';

Pour désactiver le débogage, utilisez la page d'administration, ou les commandes suivantes :

UPDATE mdl_config SET VALUE = 0 WHERE name = 'debug';
UPDATE mdl_config SET VALUE = 0 WHERE name = 'debugdisplay';

Si vous utilisez un préfixe de base de données différent de mdl_, pensez à modifier ces commandes en conséquence.

ATTENTION : pour que ces changements soient pris en compte, il est impératif de "vider tous les caches" après l'exécution de ces requêtes !

Voir aussi

  • Les développeurs peuvent également utiliser XDEBUG (Installé en tant que module sur le serveur Apache) pour creuser davantage le code, étape par étape en utilisant une application client XDEBUG. Probablement, intégrée à leur IDE préféré. Par exemple : NetBeans, phpStorm...