Skip to content

Xdebug & PHPStorm🔗

Installation🔗

Xdebug vient pré-installé sur nos VMs, mais il n'est pas activé par défaut. Pour ça il faut taper la commande suivante dans le terminal:

1
manala_php_xdebug on

Pas à Pas depuis un navigateur web🔗

Vous devez installer une extension pour votre navigateur, il y en a pour presque tous ; une liste d'extensions recommandées est fournie par JetBrains.

Vous pouvez également utiliser la même technique que pour les appels API, mais ça reste moins pratique à utiliser.

Gestion de l'extension navigateur🔗

Note

Les tests dans cette doc seront faits avec l'extension Xdebug helper sur Chrome

Pensez à activer votre extension : sur Chrome cliquez sur l'icône 'puzzle' en haut à droite de la barre de favoris, puis 'Gérer les extensions'

gérer_extension_xdebug_helper

Dans l'onglet qui s'ouvrira, cliquez sur le toggle bouton pour qu'il s'affiche en bleu. En recliquant sur l'icône 'puzzle', cliquez sur l'icône 'pinboard' (punaise), pour fixer l'extension dans votre fenêtre de navigateur.

Il faut ensuite bien penser à activer l'extension sur les pages que vous voulez 'écouter'

activer_extension_xdebug_helper

Gestion de la config PHPStorm🔗

Cliquez sur 'Start Listening for PHP Debug Connections' en haut à droite, pour écouter les connections entrantes

cliquer_start_listening_php_debug_connections

Ensuite, définissez un breakpoint dans votre code. Si vous n'avez pas d'idées spécifiques, vous pouvez dans la configuration Xdebug, cocher 'break at first line in PHP Script', et le debugger s'arrêtera dès qu'une connection avec PHPStorm est établie.

cocher_break_at_first_line

Actualisez votre page sur votre navigateur, et normalement PHPStorm devrait vous notifier d'une nouvelle connexion entrante, avec cette fenêtre ;

cocher_break_at_first_line

Acceptez, et vous pourrez ensuite modifier la configuration de ce serveur dans Préférences -> PHP -> Servers. Pensez bien à spécifier le mapping des fichiers entre vos fichiers locaux et le serveur Au niveau le plus haut (au niveau de votre dossier projet, ici mjc-interim), renseignez le chemin absolu de votre projet dans le container (normalement /srv/app/ sur les containers Docker)

mapping_local_server

Ressources (anglais) pour du debug en zero configuration🔗

JetBrains fournit une doc plus détaillée similaire à celle-ci ici (en anglais)

Pas à Pas depuis le terminal🔗

XDebug peut également intercepter les requêtes lancées depuis des commandes dans votre terminal.

Si vous avez suivi la section 'Pas à Pas depuis un navigateur web', vous avez juste à préfixer votre commande avec les variable PHP_IDE_CONFIGet XDEBUG_SESSION de cette façon ;

1
PHP_IDE_CONFIG=serverName=<nom-de-votre-serveur> XDEBUG_SESSION=1 <votre-commande-php>

Pas à Pas pour les appels API🔗

Si vous essayer de débogguer un appel api dans Postman (ou n’importe quel autre client HTTP), Xdebug ne va pas se lancer automatiquement.

Pour lui dire de se lancer, il vous faut soit :

  • Ajouter un paramètre XDEBUG_SESSION_START à la requête (en queryString ou en attribut POST)
  • Ajouter un cookie XDEBUG_SESSION

Vous pouvez lui donner la valeur que vous voulez, mais par convention on utilise PHPSTORM


Last update: December 20, 2024