Xdebug: [Step Debug] Impossible de se connecter au client de débogage
Je voudrais essayer Xdebug 3.0.0RC1 pour explorer ce qui a changé et les nouvelles fonctionnalités qui vont avec. J'utilise également le dernier PhpStorm 2020.3 EAP qui prend en charge Xdebug 3 sans aucune configuration majeure nécessaire. Voici ma configuration PhpStorm pour le débogueur:
Et voici la configuration que j'ai essayée pour Xdebug3:
zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20170718/xdebug.so
xdebug.mode=debug
xdebug.start_with_request=yes
xdebug.client_host=host.docker.internal # here I tried several combinations like: "localhost", "127.0.0.1", "172.17.0.1"
xdebug.client_port=9001 # here I tried several ports 9003 included with no success
J'ai également essayé de ne pas ajouter du tout le client_host/client_portparamètre et j'ai toujours échoué.
J'obtiens cette erreur:
Script php bin/console doctrine:cache:clear-metadata returned with error code 255
!! [17-Nov-2020 15:24:40 UTC] Xdebug: [Step Debug] Could not connect to debugging client. Tried: host.docker.internal:9001 (through xdebug.client_host/xdebug.client_port) :-(
!! [17-Nov-2020 15:24:41 UTC] PHP Fatal error: Method class@anonymous::__toString() must not throw an exception, caught Symfony\Component\DependencyInjection\Exception\AutowiringFailedException: in /var/www/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/AutowirePass.php on line 233
Quelques informations sur mon environnement:
- Fedora 33
- Docker version 19.03.13, build 4484c46d9d
- PhpStorm 2020.3 EAP Build # PS-203.5784.36
C'est curieux (parce qu'apparemment host.docker.internaln'est "pas" pris en charge par la version de Docker que j'utilise et pourtant cela fonctionne) et bizarre en même temps que la configuration suivante fonctionne avec Xdebug 2 même en ayant le débogueur à l'écoute des connexions entrantes tout le temps:
zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20170718/xdebug.so
xdebug.remote_autostart=0
xdebug.remote_enable=1
xdebug.remote_host=host.docker.internal
xdebug.remote_port=9000
Qu'est-ce qui me manque ici?
Remarque: j'ai déjà appliqué la solution fournie par le développeur Xdebug ici .
Réponses
PHP 7.4
Docker
PHPStorm 2020.1
Xdebug 3.1.0
Installez Xdebug dans votre conteneur Docker à l'aide de Dockerfile
RUN pecl install xdebug-3.0.1 && docker-php-ext-enable xdebug
Configurez php.ini avec les éléments suivants:
[xdebug]
xdebug.mode = debug
xdebug.start_with_request = yes
xdebug.discover_client_host = 1
Allez dans PHPStorm - Paramètres - PHP - Débogage - Xdebug et définissez le port sur 9003 (par défaut)
PHPStorm
C'est ça (:
Si vous souhaitez activer / désactiver le débogueur uniquement lorsque vous en avez besoin: installez simplement une extension de navigateur appelée "Xdebug helper", sélectionnez "Debug" et supprimez "xdebug.start_with_request = yes" de php.ini
[xdebug]
xdebug.mode = debug
xdebug.discover_client_host = 1
Je vais commencer à dire un grand merci à @LazyOne qui a passé du temps à m'aider sur celui-ci jusqu'à ce que nous le mettions au travail. Voici à quoi ressemble la configuration pour moi actuellement et cela fonctionne bien:
zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20170718/xdebug.so
xdebug.mode=debug
xdebug.client_port=9005
Vous devez également mettre à jour le port Xdebug sur File | Settings | Languages & Frameworks | PHP | Serverspour refléter le nouveau, mais également activer l'option d'écoute sur les connexions entrantes Xdebug3. (Je pense qu'il est activé par défaut dans PhpStorm 2020.3)
C'est la configuration pour un projet backend où aucun navigateur n'est au milieu, je n'ai pas essayé mais pour ceux-ci, vous pourriez avoir besoin de:
xdebug.start_with_request=yes
Et aussi File | Settings | Languages & Frameworks | PHP | Serversbien configuré.
Remarque: Nous avons trouvé l'hôte avait IPv6 activé et je l' ai désactivé et en plus, a ajouté le paramètre suivant à l'IDE par
Help > Edit Custom VM options:-Djava.net.preferIPv4Stack=true. Après avoir ajouté le paramètre IP4 à l'IDE, je n'ai pas essayé de réactiver IPv6 et voir si Xdebug 3 fonctionne toujours