Comment configurer un environnement de débogage local en PHP

Récemment, j'ai commencé à me concentrer davantage sur PHP et j'avais besoin de mettre en place un environnement de débogage local. Comme il n'y a pas beaucoup de didacticiels sur la façon de le faire, j'ai rencontré des problèmes sur la façon de configurer et de faire fonctionner la configuration.

En combinant quelques tutoriels et en passant quelques heures sur plusieurs forums, j'ai élaboré ce texte. L'application sur laquelle je travaille fonctionne à l'intérieur d'une boîte Vagrant qui est en quelque sorte tremblante. Il s'effondre de temps en temps, je dois donc refaire cette configuration, et je sais donc que cette configuration fonctionne :).

Le but de ce tutoriel est de faire fonctionner Xdebug sur votre serveur, puis de pointer PhpStorm vers Xdebug.

Commençons.

Conditions préalables

Si vous n'avez pas installé Xdebug sur votre serveur mais que vous utilisez PHP7, vous pouvez le faire en utilisant les instructions d'installation personnalisées du site officiel Xdebug ici.

Cependant, comme mon projet utilise PHP5, j'ai dû le faire à l'ancienne: le chercher sur les forums .

Dans ce tutoriel, je suppose que vous avez installé Xdebug.

Commencer

Vous devez d'abord trouver l'emplacement du fichier xdebug.so sur votre serveur. Copiez l'emplacement quelque part car vous l'utiliserez plus tard.

locate xdebug.so

Vous devez maintenant naviguer à l'intérieur de votre serveur jusqu'à un emplacement: /etc/php5/apache2/conf.d/ et vérifier si le fichier 20-xdebug.ini existe. S'il n'existe pas, créez-en un. Vous pouvez en créer un à l'aide de commandes telles que touch, vim, vi, nano, etc.

Vous pouvez voir que mon projet est réalisé en PHP5, alors changez le nom / l'emplacement de votre dossier en fonction de votre version de PHP.

Ouvrez maintenant le fichier 20-xdebug.ini et collez-le dans:

zend_extension=”location to your xdebug.so file” xdebug.remote_enable=1 xdebug.remote_port=9000 xdebug.remote_host=”your localhost address” xdebug.remote_autostart=1 xdebug.remote_connect_back=0 xdebug.remote_handler=”dbgp” xdebug.remote_mode=req xdebug.remote_cookie_expire_time=-9999 xdebug.remote_log=”/tmp/xdebug.log” xdebug.var_display_max_depth=15 xdebug.profiler_enable=0 xdebug.idekey=”phpstorm”

À partir de l'explication du fichier 20-xdebug.ini qui est écrit ci-dessous, vous verrez que certains de ces paramètres ne sont pas nécessaires, ou qu'ils sont définis sur une valeur par défaut. Je garde ces valeurs dans le fichier 20-xdebug.ini car elles sont bonnes à savoir.

Explication du fichier 20-xdebug.ini:

  • xdebug.remote_enable - contrôle si Xdebug doit essayer de contacter un client de débogage qui écoute sur l'hôte et le port comme défini avec les paramètres
  • xdebug.remote_port - Le port auquel Xdebug tente de se connecter sur l'hôte distant. La valeur par défaut est 9000.
  • xdebug.remote_host - Sélectionne l'hôte sur lequel le client de débogage s'exécute. La valeur par défaut est localhost.
  • xdebug.remote_autostart - lorsque ce paramètre est défini sur 1, Xdebug tentera de démarrer une session de débogage à distance et tentera de se connecter à un client.
  • xdebug.remote_connect_back - Si activé, le paramètre xdebug.remote_host est ignoré et Xdebug essaiera de se connecter au client qui a effectué la requête HTTP. La valeur par défaut est 0.
  • xdebug.remote_handler - Peut être soit «php3» qui sélectionne l'ancienne sortie du débogueur de style PHP 3, «gdb» qui active le GDB comme l'interface de débogage ou «dbgp» - le protocole du débogueur. Le protocole DBGp est le seul protocole pris en charge. La valeur par défaut est dbgp.
  • xdebug.remote_mode - Sélectionne le moment où une connexion de débogage est initiée. Ce paramètre peut avoir deux valeurs différentes: req - Xdebug essaiera de se connecter au client de débogage dès que le script démarre. jit - Xdebug essaiera uniquement de se connecter au client de débogage dès qu'une condition d'erreur se produira.
  • xdebug.remote_cookie_expire_time - Ce paramètre peut être utilisé pour augmenter (ou diminuer) la durée pendant laquelle la session de débogage à distance reste active via le cookie de session. La valeur par défaut est 3600.
  • xdebug.remote_log - S'il est défini sur une valeur, il est utilisé comme nom de fichier dans un fichier dans lequel toutes les communications du débogueur distant sont enregistrées.
  • xdebug.var_display_max_depth - Contrôle le nombre de niveaux imbriqués d'éléments de tableau et de propriétés d'objet lorsque les variables sont affichées avec xdebug_var_dump (), xdebug.show_local_vars ou via Function Traces. La valeur par défaut est 3.
  • xdebug.profiler_enable - Active le profileur de Xdebug qui crée des fichiers dans le répertoire de sortie du profil. La valeur par défaut est 0.
  • xdebug.idekey - Contrôle la clé IDE que Xdebug doit transmettre au gestionnaire de débogage DBGp. La valeur par défaut est basée sur les paramètres d'environnement.

Enregistrez le fichier et redémarrez le serveur Apache:

sudo service apache2 restart

Xdebug et PhpStorm

Vous devez d'abord ouvrir PhpStorm et sélectionner Exécuter> Modifier la configuration. Là, vous devez sélectionner + (Ajouter une nouvelle configuration) et choisir «PHP Remote Debug».

Changez le nom de la configuration de «Sans nom» en autre chose. J'ai choisi le nom «Tutoriel» pour des raisons évidentes;) Ensuite, cochez la case «Filtrer la connexion de débogage par clé IDE».

Sélectionnez le bouton Serveurs (…) puis sélectionnez + (Ajouter un nouveau serveur).

  • Renommez votre serveur en quelque chose de plus apaisant. J'ai choisi «localbackend1» dans cet exemple.
  • Dans le champ Host, saisissez votre localhost. Définissez le débogueur sur Xdebug.
  • Sélectionnez «Utiliser le mappage de chemin» et pointez sur le dossier de votre application.

Cliquez sur Apply. Vous serez renvoyé à la fenêtre précédente où vous verrez que la clé IDE est modifiable et que vous devez maintenant entrer une clé. Je mets toujours «phpstorm» ou quelque chose de similaire.

Vous remarquerez que la clé IDE «phpstorm» est déjà dans votre fichier 20-xdebug.ini:

xdebug.idekey=”phpstorm”

Vous devez également sélectionner Instance unique uniquement car cela vous empêchera de lancer plus d'une instance du même projet.

Cliquez sur Appliquer et voilà!

Vous avez terminé l'installation!

Tester et conclure

Vous avez maintenant terminé. Vous devriez voir la configuration du didacticiel que nous avons créée dans le coin supérieur droit de PhpStorm.

Vous pouvez le tester en définissant un point d'arrêt dans votre projet. Cliquez sur le bouton «bug» dans la fenêtre de configuration du didacticiel puis exécutez votre application.

Cela devrait être tout, si tout va bien, vous devez atteindre le point d'arrêt.

Et rappelez-vous, rien ne vaut la sensation de voir les valeurs d'exécution pendant le débogage.

Merci pour la lecture! Découvrez plus d'articles comme celui-ci et d'autres choses amusantes que je fais sur mon profil Github: //github.com/GoranAviani