Bonjour,

Une note à moi-même et à mes stagiaires pour utiliser xdebug avec un point de montage SSHFS, et PHP FPM.

  1. S'assurer que PHP est bien installé sur la machine du développeur, c'est nécessaire pour la coloration syntaxique et la vérification de syntaxe.
  2. Installer PHP xdebug sur la machine distante
  3. Configurer xdebug pour PHP FPM sur la machine distante. Attention, cela change selon la version de xdebug.
    1. Modifier le fichier de configuration FPM pour xdebug, par exemple pour Debian c'est /etc/php/7.3/fpm/conf.d/20-xdebug.ini
    2. Y placer les instructions suivantes :
      Pour xdebug v3 :
      [xdebug]
      zend_extension="xdebug.so"
      xdebug.mode=debug
      xdebug.start_with_request = yes
      xdebug.client_host=127.0.0.1
      xdebug.client_port="9003"
      
      Pour xdebug v2 :
      
      [xdebug]
      zend_extension="xdebug.so"
      xdebug.remote_enable=1
      xdebug.remote_autostart=1
      xdebug.remote_host=127.0.0.1
      xdebug.remote_port="9003"
    3. Redémarrer PHP FPM.
       
  4. Sur la machine du développeur, installer le module PHP xdebug pour Visual Studio : https://marketplace.visualstudio.com/items?itemName=felixfbecker.php-debug
  5. Connecter en SSHFS le dossier distant (la machine qui exécute PHP) sur la machine (locale) du développeur : sshfs login@distant:dossier_distant dossier_local
  6. Connecter un tunnel SSH pour forward le port xdebug vers la machine locale : ssh -R 9003:localhost:9003 login@distant
  7. Ouvrir dans Visual Studio le dossier monté avec SSHFS
  8. Ouvrir un fichier, puis le debugger dans les onglets à gauche
  9. Cliquer sur "create a json launch file", et vérifier le port de xdebug pour pointer sur le bon port. Ajouter le pathMapping pour mettre en correspondance le chemin local (ouvert dans Visual Studio Code) et le chemin distant (monté en SSHFS) :
    {
        // Use IntelliSense to learn about possible attributes.
        // Hover to view descriptions of existing attributes.
        // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
        "version": "0.2.0",
        "configurations": [
            {
                "name": "Listen for Xdebug",
                "type": "php",
                "request": "launch",
                "port": 9003,
                "pathMappings": {
                    "dossier_distant": "${workspaceFolder}/"
                }
            },
            {
                "name": "Launch currently open script",
                "type": "php",
                "request": "launch",
                "program": "${file}",
                "cwd": "${fileDirname}",
                "port": 9003,
                "pathMappings": {
                    "chemin_distant": "${workspaceFolder}/"
                }
            }
        ]
    }
  10. Redémarrer Visual Studio par sécurité.
  11. Lancer l'écoute via le debugger, ajouter les breakpoints dans Visual Studio, puis charger la page du site distant via le navigateur. Visual Studio devrait stopper l'exécution au niveau des breakpoints, pour permettre l'affichage de la pile, et le lancement des commandes.

Sources