5 votes

Comment déboguer Symfony 4 avec Xdebug + PhpStorm sur WSL ?

J'ai une installation PHP7.1 + nginx sur un sous-système Windows-Linux (WSL).
Je mentionne WSL, de sorte que dans PhpStorm Xdebug est configuré comme un débogueur distant, qui se connecte via le port 9000. Toujours est-il que WSL et PhpStorm utilisent les mêmes fichiers physiques.

Pour le projet Symfony 4, j'utilise le serveur web intégré : bin/console server:run

J'ai réussi à configurer PhpStorm pour accepter les connexions Xdebug. Lorsque la connexion est établie, il demande des mappages de fichiers. Je m'attends à ce que index.php à demander, mais le mappage du fichier demandé l'est : vendor/symfony/web-server-bundle/Resources/router.php .

Comme indiqué dans la documentation à l'intérieur de ce fichier - ce fichier met en œuvre des règles de réécriture pour le serveur web intégré de PHP. Ok.

Si j'accepte le mappage vers ce fichier, le débogage commence à l'endroit suivant router.php va quelques lignes plus loin et puis plus rien ne se passe. Il ne passe pas à mon public/index.php ou ne s'arrête sur aucun point d'arrêt.

La question est - comment configurer le débogage de Symfony 4 avec Xdebug ? Peut-être y a-t-il un problème avec les mappings ou autre ?

0voto

Nico Haase Points 333

A travers https://www.jetbrains.com/help/phpstorm/override-server-path-mappings-dialog.html vous devez étendre vos mappages de fichiers. Probablement, router.php a été utilisé car c'était le premier point d'entrée à trouver - mais ce premier fichier permet de voir la structure de fichier utilisée par le WSL.

Ainsi, l'ouverture de la boîte de dialogue de mappage devrait vous donner router.php quelque part dans la structure avec un chemin d'accès mappé qui se trouve également quelque part dans un répertoire plus profond. Si vous ajoutez une correspondance pour votre dossier racine avec la même correspondance que celle utilisée pour le fichier router.php , supprimant vendor/symfony/web-server-bundle/Resources/router.php Vous devriez avoir terminé

0voto

joeDaigle Points 16

J'ai rencontré un problème très similaire, où il semble qu'après la pause initiale (première ligne de script), xdebug ne peut pas continuer à parcourir le code.

PhpStorm 2017.3, Mojave 10.14, Symfony 4.2, Xdebug 2.7.1

Essayez de mettre à jour PhpStorm vers 2018.3 - cela a fait la différence pour moi.

0voto

Marek Points 817

Vous devez d'abord réinstaller ssh sur WSL :

sudo apt remove openssh-server
sudo apt install openssh-server

Editer /etc/ssh/sshd_config , changer Mot de passeAuthentication à oui et ajoutez votre nom d'utilisateur à la fin du fichier : AllowUsers votre nom d'utilisateur

Enregistrez vos modifications et redémarrez ssh :

sudo service ssh --full-restart

Plus d'informations ici : https://www.illuminiastudios.com/dev-diaries/ssh-on-Windows-subsystem-for-linux/

A la fin, configurez le débogage à distance dans PhpStorm : http://blog.spameri.cz/2017/04/20/phpstorm-wsl-php.html

N'oubliez pas de définir une correspondance correcte entre les répertoires. Pour PhpStorm, vos fichiers se trouvent dans C:/ProjectsDir/MyProject, mais pour xdebug, c'est /mnt/c/ProjectsDir/MyProject.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X