Le déboguage d'une application écrite en PHP n'a longtemps rien eu d'évident : on multipliait les
echo
. Fort heureusement, il existe désormais une solution : Xdebug.
Dans un article précédent, il a été question de la manière de configurer Apache et PHPStorm pour déboguer dans cet IDE.
Or, il aussi possible d'utiliser Xdebug en dehors du contexte d'un IDE. Pour cela, il suffit d'utiliser le client Xdebug en ligne de commandes. A la limite, il est fort instructif de tenter de l'utiliser avant même d'utiliser Xdebug dans PHPStorm ou tout autre IDE, tant cela permet de mieux comprendre comment Xdebug peut fonctionner.
La démarche à suivre pour déboguer avec le client Xdebug est des plus simples. Pour commencer, il suffit d'installer trois choses :
- l'extension Xdebug dans PHP ;
- le client Xdebug ;
- l'extension Xdebug helper (optionnel).
Il est alors possible de déboguer.
Installer l'extension Xdebug dans PHP
Cette installation a déjà été décrite dans cet article. Il n'y a rien de plus à ajouter.
Installer le client Xdebug
Cliquez ici pour télécharger le client Xdebug. Vous le trouverez dans la section "Command Line Debug Client".
Comme vous pourrez le constater, il s'agit d'un simple exécutable, sans installateur. Pour pouvoir l'utiliser, désarchivez-le donc simplement dans un répertoire quelconque.
Depuis une ligne de commandes, démarrez le client :
A cet instant, Windows devrait râler, et vous demander de rajouter des règles à la configuration du pare-feu pour permettre au client Xdebug d'écouter sur le port 9000. Autorisez cela sur les réseaux locaux puisque vous souhaitez déboguer une application PHP exécutée sur le serveur Apache installé sur votre poste.
Par la suite, si vous vous rendez dans configuration du pare-feu, vous pourrez visualiser les règles en question. Utile pour les les aménager ou les supprimer le jour où vous souhaiterez utiliser différemment, voire ne plus utiliser, le client Xdebug. On n'est jamais trop prudent...
Notez qu'il est possible de permettre à des tiers de se connecter au client Xdebug pour déboguer l'application en question, mais je vous renvoie à la documentation de Xdebug pour découvrir comment.
Installer Xdebug helper dans Firefox (optionnel)
Comme celle de l'extension Xdebug dans PHP, cette installation a déjà été décrite dans cet article. Il n'y a rien de plus à rajouter.
Notez que cette installation est optionnelle, car il est parfaitement possible de faire le travail de l'extension par vous-même. En effet, comme déjà expliqué, Xdebug se contente de rajouter un cookie dans la requête pour prévenir l'extension Xdebug du serveur Apache qu'il doit tenter de se connecter au client Xdebug pour initier une session de déboguage. Cela, vous pouvez le faire vous-même, soit en rajoutant pareillement un cookie à votre requête via le débogueur de votre navigateur ou une extension de ce dernier, soit en rajoutant simplement un paramètre XDEBUG_SESSION_START=bidule à votre requête.
Démarrer la session de déboguage
A l'aide de l'extension Xdebug helper, activez le déboguage, puis connectez-vous tout simplement à l'application PHP en saisissant donc son URI dans la barre d'adresse. Le chargement de la page va se bloquer. Par la suite, en examinant les en-têtes de la requête via le débogueur de Firefox, vous pourrez visualiser la présence du fameux cookie injecté par l'extension pour solliciter le démarrage du déboguage :
Répondant à une connexion de l'extension Xdebug de PHP sur le port 9000, le client Xdebug bloque l'exécution de PHP :
Vous pouvez maintenant utiliser les commandes décrites ici pour déboguer. Par exemple, step_into pour passer à l'instruction suivante :