Démarrer avec Xdebug

Comment installer et faire fonctionner cet outil de debug en PHP ?

Vérifier qu’Xdebug est installé avec sa version de PHP

Via la console

php -v

Vous devez alors récupérer les informations sur la version de PHP utilisée actuellement. Par exemple:

PHP 5.6.19 (cli) (built: Mar 7 2016 18:25:05)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies
with Xdebug v2.3.3, Copyright (c) 2002-2015, by Derick Rethans

L’important est d’avoir l’information with Xdebug vX.X.X.

Via un fichier php

<?php
phpinfo();

Il faut ensuite chercher dans la liste des extensions (classées par ordre alphabétique), l’encart suivant :

Installer Xdebug sur Mac

Avec MAMP

Xdebug est déjà inclus, il n’y a rien à faire ! ;)

Avec Homebrew

Pour voir si une version de PHP est installée via Homebrew :

La commande va lister toutes les formules installées, il faut alors chercher celles qui concernent php:

brew list

Chaque formule représente une version de php. Si aucune n’est présente, il suffit d’installer la version de son choix avec :

La commande ne va probablement pas marcher la première fois et va vous demander d’ajouter homebrew/php à votre liste de « tap » puis recommencer l’install :

brew tap homebrew/php brew install phpXX

Une fois PHP installé via Homebrew, il faut vérifier que la commande php utilise bien notre nouvelle version :

php -v

Si ce n’est pas bon, il faut vérifier son $PATH.

Si c’est bon, il nous reste à installer Xdebug :

brew install phpXX-xdebug

De la même façon, on peut installer facilement de nombreuses extensions PHP, pour avoir la liste complète :

brew search phpXX

Installer Xdebug sur Windows

Avec WAMP

Xdebug est déjà inclus, il n’y a rien à faire ! ;)

A la main

N’étant pas expert Windows, je ne peux pas vous expliquer comment y installer PHP. Chocolatey est une piste à explorer :

https://chocolatey.org/

Xdebug dispose de versions pré-compilées pour Windows et propose un assistant pour vous aider à choisir la bonne version.

L’assistant :

https://xdebug.org/wizard.php

La liste des versions-précompilées :

https://xdebug.org/download.php

Installer Xdebug sur Linux

L’assitant d’Xdebug est là pour vous aider :

https://xdebug.org/wizard.php

Localiser ses fichiers php.ini

Pour savoir où se situe vos fichiers .ini :

Vous obtiendrez par exemple :

Configuration File (php.ini) Path: /usr/local/etc/php/5.6
Loaded Configuration File: /usr/local/etc/php/5.6/php.ini
Scan for additional .ini files in: /usr/local/etc/php/5.6/conf.d
Additional .ini files parsed: /usr/local/etc/php/5.6/conf.d/ext-intl.ini,
/usr/local/etc/php/5.6/conf.d/ext-mongo.ini
/usr/local/etc/php/5.6/conf.d/ext-opcache.ini,
/usr/local/etc/php/5.6/conf.d/ext-ssh2.ini,
/usr/local/etc/php/5.6/conf.d/ext-xdebug.ini

Si vous ne disposez pas de fichiers spécifiques pour vos extensions, c’est que toute la configuration est à mettre dans php.ini.

Autoriser le debug distant

Ici, distant est à prendre dans le sens « par une autre application », en l’occurence un IDE ou autre.

On va ajouter (ou modifier si les variables sont déjà définies) la ligne suivante :

xdebug.remote_enable=1

De cette façon, on lui dit d’accepter les debug distants, provenant uniquement de l’ip 127.0.0.1.

Par défaut, les valeurs suivantes sont pré-configurées (et pleins d’autres) et il n’y a pas besoin de les ajouter dans le fichier .ini :

xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_autostart=0
xdebug.remote_handler=dbgp

Vérifier la disponibilité du port 9000

Pour qu’un IDE ou un debugger réagisse aux informations provenant d’Xdebug, il doit écouter le 9000 et pour cela, le port doit être disponible.

Sur Windows

netstat -ano

Sur Mac / Linux

lsof -i tcp:9000

Si le port n’est pas libre, il faut quitter manuellement l’application responsable (ou la kill / killall).

Connexion avec un IDE / debugger

Cette partie va grandement dépendre en fonction du logiciel utilisé mais les étapes restent globalement les mêmes pour tous.

Il vous faut un serveur PHP en marche avec vos fichiers accessibles en HTTP :

  • soit via MAMP ou autre
  • soit via le serveur inclut à php
php -S 127.0.0.1:5555

Une fois cela fait, vous devez ajouter un breakpoint dans votre code à l’emplacement de votre choix ou cocher une case dans les options de votre debugger « Break on first line of execution ».

Si l’IDE / le debugger vous propose de saisir une IDE KEY, choisissez en une ou utilisez celle par défaut (en général c’est le nom du programme, PHPSTORM pour PhpStorm). Il faut juste se la noter pour plus tard. On peut alors mettre en marche son debugger (via un bouton en forme d’insecte en général), s’il ne le fait pas automatiquement.

Nous avons donc :

  • un serveur php lancé
  • un debugger lancé

Pour vérifier que le debugger est en route, on peut vérifier qu’il écoute bien le port 9000 :

Sur Windows

netstat -ano

Sur Mac / Linux

lsof -i tcp:9000

Si ce n’est pas le cas, il y a un problème au niveau de la configuration du debugger / IDE.

Se lancer à l’aventure

Après toute cette configuration, nos efforts vont enfin payer. On peut accéder à nos scripts normalement sans debug en HTTP :

http://127.0.0.1:5555

Pour activer le debug, il suffit d’ajouter un paramètre GET :

http://127.0.0.1:5555/?XDEBUG_SESSION_START=PHPSTORM

Si l’on a fourni une IDE KEY à notre IDE / Debugger, il faut utiliser la même. Sinon, on peut mettre 1.


Originally published at blog.justenico.fr.