Débogage de code PHP : techniques et outils pour les pros

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Introduction : pourquoi le débogage est un super-pouvoir pour le développeur

\n\n

Chaque développeur PHP a rencontré au moins une fois dans sa vie l'écran blanc de la mort, l'inexplicable 500 Internal Server Error ou une variable qui « marchait il y a une seconde ». Dans ces moments-là, on a envie de jeter son ordinateur par la fenêtre. Mais au lieu de cela, faisons du débogage de code PHP une routine qui ne fait plus trembler.

\n\n

Dans cet article, nous allons passer en revue les techniques et outils qui vous aideront à trouver les bugs plus vite que l'eau ne bout. Du classique var_dump() à la configuration avancée de Xdebug, le tout avec des exemples concrets et des cas réels. C'est parti !

\n\n

1. Débogage de base : de var_dump() à error_reporting

\n\n

1.1. var_dump() et print_r() — des méthodes à l'ancienne mais qui fonctionnent

\n\n

La façon la plus simple de déboguer du code PHP est d'afficher le contenu d'une variable à l'écran. Oui, ce n'est pas élégant, mais quand on a besoin de comprendre rapidement ce qu'il y a dans un tableau, var_dump() fait parfaitement son travail.

\n\n
<?php\n$users = [\n    ['name' => 'Иван', 'age' => 25],\n    ['name' => 'Мария', 'age' => 30]\n];\n\n// var_dump montre les types de données et la structure\nvar_dump($users);\n\n// print_r — une version plus compacte\necho '<pre>';\nprint_r($users);\necho '</pre>';\n?>
\n\n

Conseil : Utilisez <pre> autour de la sortie pour conserver le formatage. Et n'oubliez jamais de supprimer ces lignes de débogage avant de déployer en production — sinon les utilisateurs verront vos « squelettes dans le placard ».

\n\n

1.2. Activer l'affichage de toutes les erreurs

\n\n

La configuration standard de PHP cache souvent les erreurs « sous le tapis ». Pour les voir, ajoutez au début du script :

\n\n
<?php\n// Afficher toutes les erreurs, y compris les notices et les warnings\nerror_reporting(E_ALL);\nini_set('display_errors', 1);\n?>
\n\n

C'est particulièrement utile lors du débogage de code PHP sur un serveur local. Mais en production, désactivez impérativement display_errors — c'est un risque de sécurité !

\n\n

1.3. debug_backtrace() — qui a appelé cette fonction ?

\n\n

Il arrive qu'une fonction soit appelée depuis le mauvais endroit. La trace de la pile d'appels permet d'en trouver la source :

\n\n
<?php\nfunction logError($message) {\n    $trace = debug_backtrace();\n    echo "Erreur dans le fichier : {$trace[0]['file']} à la ligne {$trace[0]['line']}<br>";\n    echo "Message : $message";\n}\n\n// Désormais, tout appel à logError montrera d'où il vient\nlogError('Quelque chose a mal tourné');\n?>
\n\n

2. Xdebug — le couteau suisse du débogage PHP

\n\n

2.1. Installation et configuration de Xdebug

\n\n

Xdebug est une extension PHP qui transforme le débogage en vaisseau spatial. Avec elle, vous pouvez placer des points d'arrêt, voir les valeurs des variables en temps réel et même profiler le code.

\n\n

Installation via pecl (pour Linux/Mac) :

\n
pecl install xdebug
\n\n

Pour Windows, il est plus simple de télécharger le .dll depuis le site officiel et de l'ajouter dans php.ini :

\n\n
zend_extension = /chemin/vers/xdebug.so\nxdebug.mode = debug\nxdebug.start_with_request = yes
\n\n

2.2. Points d'arrêt dans l'IDE

\n\n

Si vous utilisez PhpStorm ou VS Code, configurez l'intégration avec Xdebug. Placez un point d'arrêt (cercle rouge à gauche de la ligne de code), lancez le débogage — et le code s'arrête sur cette ligne. Vous voyez toutes les variables, pouvez exécuter pas à pas et même modifier les valeurs « à la volée ».

\n\n

Exemple : Vous cherchez pourquoi le total de la commande est mal calculé. Placez un point d'arrêt sur la ligne de calcul, lancez la requête — et vous voyez que $discount est égal à null au lieu d'un nombre. Problème trouvé en 10 secondes !

\n\n

2.3. Profilage avec Xdebug

\n\n

Du code lent ? Activez le profileur :

\n
xdebug.mode = profile\nxdebug.output_dir = /tmp/profiles
\n\n

Après avoir exécuté le script, vous obtiendrez

Blogs

Book Recommendations