Introduction : Pourquoi le débogage est un superpouvoir du développeur
\n\nAvez-vous déjà passé une nuit à fixer votre écran sans comprendre pourquoi votre site PHP affichait une page blanche de la mort ? Ou pire encore, des chiffres incorrects dans un rapport ? Félicitations, vous avez rencontré le débogage. Beaucoup de débutants craignent ce mot, pensant que le débogage de code PHP est réservé à une élite de gourous. En réalité, c'est simplement une compétence que l'on peut et doit entraîner.
\n\nDans cet article, nous ne nous contenterons pas d'énumérer des fonctions. Nous analyserons des scénarios réels : du simple var_dump() à la configuration de Xdebug dans un IDE. Vous apprendrez à transformer le processus de recherche d'erreurs en une routine structurée, et non en une divination. C'est parti !
1. Les classiques : var_dump et print_r
\n\nLa façon la plus simple de déboguer PHP est d'insérer var_dump($variable) à un endroit suspect. Mais il y a un détail : tout le monde ne le fait pas correctement.
Le bon var_dump
\nBeaucoup écrivent ceci :
\nvar_dump($user);\nEt obtiennent un affichage confus. Il est préférable de formater la sortie :
\necho '<pre>';\nvar_dump($user);\necho '</pre>';\ndie(); // arrêter l'exécution pour ne pas perturber le reste de l'affichage\n\nEt pour les tableaux et objets, print_r() avec le drapeau true est plus pratique pour conserver le résultat dans une chaîne :
$data = print_r($users, true);\nfile_put_contents('debug.log', $data, FILE_APPEND);\n\nConseil : Ne laissez jamais de var_dump en production. Utilisez un débogage conditionnel :
if (defined('DEBUG_MODE') && DEBUG_MODE) {\n var_dump($variable);\n}\n\n2. La journalisation : votre meilleur ami en production
\n\nLorsque le site est déjà sur le serveur, vous ne pouvez pas simplement afficher l'erreur à l'écran. C'est là que la journalisation PHP entre en jeu. La fonction intégrée error_log() est la base.
Comment configurer error_log
\nDans le fichier php.ini, indiquez :
error_reporting = E_ALL\ndisplay_errors = Off\nlog_errors = On\nerror_log = /var/log/php_errors.log\n\nDésormais, toutes les erreurs, y compris les avertissements, seront écrites dans un fichier. Et dans le code, vous pouvez faire ceci :
\nif ($result === false) {\n error_log("Erreur de requête à la BD : " . $db->error, 3, '/var/log/myapp.log');\n // 3 — signifie écriture dans un fichier, et non dans syslog\n}\n\nApproche moderne : Monolog
\nPour les projets sérieux, utilisez la bibliothèque Monolog. Elle peut écrire dans des fichiers, dans Slack, dans une base de données et même dans Telegram. Exemple de connexion :
\nuse Monolog\\Logger;\nuse Monolog\\Handler\\StreamHandler;\n\n$log = new Logger('my_app');\n$log->pushHandler(new StreamHandler(__DIR__ . '/app.log', Logger::WARNING));\n$log->warning('Un utilisateur a tenté de se connecter sans droits', ['user_id' => 123]);\n\n3. Xdebug : le moteur de débogage réactif
\n\nSi vous n'avez pas encore installé Xdebug, vous perdez du temps. Ce n'est pas qu'un simple outil — c'est un réacteur dorsal pour le développeur. Il permet de placer des points d'arrêt (breakpoints), de voir les valeurs des variables en temps réel et même de profiler le code.
\n\nInstallation et configuration
\nInstallez via le gestionnaire de paquets :
\npecl install xdebug\n# ou pour Ubuntu :\nsudo apt install php-xdebug\n\nAjoutez dans php.ini :
zend_extension=xdebug.so\nxdebug.mode=debug\nxdebug.start_with_request=yes\nxdebug.client_host=127.0.0.1\nxdebug.client_port=9003\n\nConfigurez maintenant votre IDE. Dans PhpStorm, cela se fait en deux clics : configurez l'interpréteur PHP et cliquez sur "Start Listening for PHP Debug Connections".
\n\nComment ça fonctionne dans la pratique
\nPlacez un point d'arrêt (cercle rouge) sur la ligne de code suspecte. Lancez le script dans le navigateur avec le paramètre ?XDEBUG_SESSION_START=1.