Programmation PHP/Xdebug
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[modifier | modifier le wikicode]
Installation sur Linux[1][2] :
sudo apt-get install php7.4-xdebug
ou
pecl install xdebug
Puis dans php.ini, sur PHP7.0 :
xdebug.remote_enable = On
ou sur PHP7.4 :
sudo vim /etc/php/7.4/apache2/conf.d/20-xdebug.ini
Ajouter :
xdebug.remote_enable=1
Configuration complète[modifier | modifier le wikicode]
V2[modifier | modifier le wikicode]
On peut aussi forcer d'autres paramètres[3] :
sudo apt-get install php7.4-xdebug
&& 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_enable=1" >> /usr/local/etc/php/php.ini \
&& echo "xdebug.remote_autostart=1" >> /usr/local/etc/php/php.ini
V3[modifier | modifier le wikicode]
Ceci change dans Xdebug V3[4] :
sudo apt-get install php7.4-xdebug
&& echo "xdebug.remote_handler=dbgp" >> /usr/local/etc/php/php.ini \
&& echo "xdebug.discover_client_host=0" >> /usr/local/etc/php/php.ini \
&& echo "xdebug.client_port=9000" >> /usr/local/etc/php/php.ini \
&& echo "xdebug.mode=debug" >> /usr/local/etc/php/php.ini \
&& echo "xdebug.start_with_request=yes" >> /usr/local/etc/php/php.ini
Docker[modifier | modifier le wikicode]
Avec Docker, il faut aussi spécifier le "remote_host"[5].
Exemple d'installation et activation :
RUN pecl install xdebug-2.9.8 \
&& docker-php-ext-enable xdebug
RUN echo "xdebug.client_host = 172.170.0.1" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
&& echo "xdebug.remote_handler=dbgp" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
&& echo "xdebug.discover_client_host=0" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
&& echo "xdebug.client_port=9000" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
&& echo "xdebug.mode=debug" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
&& echo "xdebug.start_with_request=yes" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
Lancement[modifier | modifier le wikicode]
[modifier | modifier le wikicode]
Il faut installer un module sur son navigateur (ex : Xdebug-ext sur Firefox[6]) pour pouvoir activer ou désactiver le débogage d'une page. Ce module s'interface avec les principaux IDE, par exemple PhpStorm[7], pour leur faire lancer le débogage lors du chargement d'une page.
En ligne de commande[modifier | modifier le wikicode]
On peut ajouter un argument à PHP[8]. Ex :
php -d xdebug.profiler_enable=1 bin/console MaCommande.php
Utilisation[modifier | modifier le wikicode]
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[modifier | modifier le wikicode]
- ↑ « PHPStorm : Xdebug »
- ↑ « Tutoriel PHP : Xdebug, l'exécution pas à pas »
- ↑ https://xdebug.org/docs/all_settings
- ↑ https://xdebug.org/docs/upgrade_guide
- ↑ 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