Utiliser le débogueur de PhpStorm avec Homestead

Il est impensable d'effectuer de la programmation de façon sérieuse sans disposer d'un débogueur adéquat. Heureusement, vous pourrez déboguer vos programmes Laravel sous PhpStorm grâce à XDebug, une extension PHP.

Les étapes suivantes correspondent à une installation avec les versions suivantes :

  • Laravel 5.3
  • PHP 7.0
  • PhpStorm 2016.3
  • Le tout sur un ordinateur Windows avec machine virtuelle VirtualBox

▼Publicité

Voici donc les étapes à réaliser.

Installation et configuration de XDebug

  1. Vérifiez si Xdebug est installé sur votre machine virtuelle. Vous y parviendrez en entrant la commande suivante dans la méthode d'action correspondant à la racine de votre site Web (ex : PagesController@index).
    Contrôleur Laravel (PHP)

    phpinfo();

    Si vous ne voyez aucune référence à Xdebug, vous devez procéder à son installation. Normalement, avec Homestead, Xdebug devrait être déjà installé.

    Si ce n'est pas le cas, vous devrez installer Xdebug manuellement. Vous ne devriez cependant pas avoir à faire ceci :

  2. Pour voir si PhpStorm voit Xdebug, allez dans le menu Run / Web Server Debug Validation. Le Path pointera vers le dossier public de votre projet (puisque c'est la racine du site Web) et l'URL sera celui que vous avez configuré dans le fichier hosts (attention : pas de 127.0.0.1 devant monprojet.app).

    Validate debugger configuration

  3. On voit ici que le débogage à distance n'est pas activé. PhpStorm donne même la solution pour régler le problème. Voici donc comment mettre cette solution en oeuvre :
    • Le fichier php.ini peut avoir été éclaté en plusieurs fichiers. C'est le cas ici. Les configurations de débogage sont dans le fichier etc\php7.0\fpm\conf.d\20-xdebug.ini. Notez que la version de PHP (ici : 7.0) pourrait être différente selon votre installation.

      Pour voir le contenu de ce fichier, exécutez les commandes suivantes dans la console Vagrant SSH :

      Console Vagrant SSH

      cd /etc/php/7.0/fpm/conf.d

      cat 20-xdebug.ini

    • Si la ligne xdebug.remote_enable=1 n'est pas présente, vous devez l'ajouter. On en profitera pour ajouter une série de configurations qui assureront que le débogueur fonctionnerra comme souhaité :
      Console Vagrant SSH

      sudo vim 20-xdebug.ini

      Et dans Vim, appuyez sur Insert puis entrez les configurations suivantes :

      Fichier xdebug.ini

      zend_extension=xdebug.so

      xdebug.default_enable=1

      xdebug.remote_enable=1

      xdebug.remote_port=9000

      xdebug.remote_autostart=1

      xdebug.remote_connect_back=1

      xdebug.remote_log = ~/xdebug.log

      Pour terminer votre saisie et enregistrer les modifications, appuyez sur ESCAPE puis la séquence de touches :wq.

    • Vous devez maintenant redémarrer le service. Pour connaître la liste des services :
      Console Vagrant SSH

      service --status-all

      On recherche un service en lien avec PHP. On voit que le service s'appelle « php7.0-fpm » (le nom pourrait être différent selon votre installation PHP). Donc, pour redémarrer le service :

      Console Vagrant SSH

      service php7.0-fpm restart

      Si un mot de passe vous est demandé, entrez vagrant. Il s'agit du mot de passe que Homestead a créé pour l'usager vagrant sur votre Linux.

    • Une fois les configurations effectuées, faites à nouveau afficher la page Web contenant un appel à phpinfo(). Vous devriez voir les configurations de Xdebug, notamment xdebug.remote_enable qui est désormais à On.

      xdebug.remote_enabled=on

      Remarquez que si vous allez dans PhpStorm, menu File / Settings / Languages & Frameworks / PHP et que vous cliquez sur les points de suspension à côté de CLI Interpreter, vous devriez voir la mention «  Debugger: Not installed  ». Ceci est normal puisque cet écran montre les configurations pour un interpréteur CLI et que nos modifications ont été faites pour FPM.

Configurations dans PhpStorm

Une fois que XDebug est fonctionnel, il vous reste quelques configurations à faire dans PhpStorm.

  • Allez dans le menu File / Settings puis choisissez l'option Languages & Frameworks / PHP / Servers.
  • Vous devriez voir votre serveur Homestead dont le Host est monprojet.app (ou un autre nom de domaine selon ce que vous avez configuré). Ce serveur sera utilisé pour lancer l'application sans le débogueur. Vous devez créer un nouveau serveur en cliquant sur le + vert.
  • Entrez à nouveau les informations qui étaient dans le premier serveur (Host : monprojet.app, Port : 80, Debugger : Xdebug) et nommez ce serveur HomesteadDebug et cette fois, vous devez cocher « Use path mapping ».
  • À côté du dossier de votre projet (ex : C:\Users\VotreNom\Documents\CodeLaravel\MonProjet), entrez le dossier de votre projet sur la machine virtuelle (ex : /home/vagrant/Code/MonProjet) puis appuyez sur Entrée.
  • À côté du dossier public (ex : C:\Users\VotreNom\Documents\CodeLaravel\MonProjet\public), entrez le dossier public sur la machine virtuelle (ex : /home/vagrant/Code/MonProjet/public) puis appuyez sur Entrée.

    Serveur HomesteadDebug

  • Pour terminer, vous devez aller dans le menu Run / Edit Configurations puis ajouter une nouvelle configuration de type « PHP Web Application » qui utilise votre serveur de débogage. Nommez cette configuration Debug-Accueil.

    Run/Debug configurations

  • Vous pouvez désormais placer un point d'arrêt dans votre code, sélectionner la configuration de débogage dans le haut de la fenêtre puis cliquer sur l'icône de débogage pour lancer le débogage de votre application.
Merci de partager ! Share on FacebookTweet about this on TwitterShare on Google+Share on LinkedInPin on PinterestShare on StumbleUponEmail this to someone
Catégories