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 |
|
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'
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'
Gestion de la config PHPStorm🔗
Cliquez sur 'Start Listening for PHP Debug Connections' en haut à droite, pour écouter les connections entrantes
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.
Actualisez votre page sur votre navigateur, et normalement PHPStorm devrait vous notifier d'une nouvelle connexion entrante, avec cette fenêtre ;
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)
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_CONFIG
et XDEBUG_SESSION
de cette façon ;
1 |
|
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