Xdebug est un système qui permet d'exécuter le code pas à pas, et élimine donc le risque de sauvegarder des "echo", des "print" ou des "var_dump" en production.
Installation
Installation sur Linux[1][2] :
sudo apt-get install php7.2-xdebug
ou
pecl install xdebug
Puis dans php.ini, sur PHP7.0 :
xdebug.remote_enable = On
ou sur PHP7.2 :
sudo vim /etc/php/7.2/apache2/conf.d/20-xdebug.ini
Ajouter :
xdebug.remote_enable=1
Configuration complète
On peut aussi forcer d'autres paramètres[3] :
sudo apt-get install php7.2-xdebug
&& echo "xdebug.remote_enable=1" >> /usr/local/etc/php/php.ini \
&& echo "xdebug.remote_handler=dbgp" >> /usr/local/etc/php/php.ini \
&& echo "xdebug.remote_connect_back=0" >> /usr/local/etc/php/php.ini \
&& echo "xdebug.remote_port=9000" >> /usr/local/etc/php/php.ini \
&& echo "xdebug.remote_autostart=1" >> /usr/local/etc/php/php.ini
Avec Docker, il faut aussi spécifier le "remote_host"[4].
Lancement
Dans un navigateur
Il faut installer un module sur son navigateur (ex : Xdebug-ext sur Firefox[5]) pour pouvoir activer ou désactiver le débogage d'une page. Ce module s'interface avec les principaux IDE, par exemple PhpStorm[6], pour leur faire lancer le débogage lors du chargement d'une page.
En ligne de commande
On peut ajouter un argument à PHP[7]. Ex :
php -d xdebug.profiler_enable=1 bin/console MaCommande.php
Utilisation
Lors du débogage, PhpStorm fera apparaitre un menu "Debug" avec trois sous-menus dont :
- la liste des variables du script et leurs valeurs (modifiables à la volée)
- les warnings PHP
- la sortie HTML.
Quand on clique dans la marge, un point d’arrêt est créé et représenté par une ligne rouge.
Raccourcis clavier (voir le menu "Run" en haut) :
- F7 (step into) : mode pas à pas détaillé.
- F8 (step over) : mode pas à pas sans sauter dans les dépendances.
- F9 (resume) : poursuivre l'exécution du programme sans s'arrêter.
- Alt + F9 : poursuivre jusqu'au prochain point d'arrêt.
- Shift + F7 : pas à pas intelligent.
Références
- ↑ PHPStorm : Xdebug
- ↑ Tutoriel PHP : Xdebug, l'exécution pas à pas
- ↑ https://xdebug.org/docs/all_settings
- ↑ https://blog.eleven-labs.com/fr/debug-run-phpunit-tests-using-docker-remote-interpreters-with-phpstorm/
- ↑ https://addons.mozilla.org/fr/firefox/addon/xdebug-ext-quantum/?src=search
- ↑ https://www.jetbrains.com/help/phpstorm/configuring-xdebug.html
- ↑ https://stackoverflow.com/questions/2288612/how-to-trigger-xdebug-profiler-for-a-command-line-php-script