Xdebug: [Step Debug] Could not connect to debugging client

僤鯓⒐⒋嵵緔 提交于 2021-01-22 07:06:36

问题


I would like to try Xdebug 3.0.0RC1 to explore what has changed and the new features that come with it. I am also using the latest PhpStorm 2020.3 EAP which supports Xdebug 3 with no major config needed. Below is my PhpStorm config for the Debugger:

And here is the configuration I have tried for 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

I have also tried not adding the client_host/client_port setting at all and still failing.

I am getting this error:

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

Some info about my environment:

  • Fedora 33
  • Docker version 19.03.13, build 4484c46d9d
  • PhpStorm 2020.3 EAP Build #PS-203.5784.36

It is curious (because apparently host.docker.internal is "not" supported by the Docker version I am using and yet it works) and weird at the same time that the following configuration does work with Xdebug 2 even having the debugger listening for incoming connections all the time:

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

What I am missing here?

Note: I already applied the solution provided by the Xdebug developer here.


回答1:


PHP 7.4
Docker
PHPStorm 2020.1
Xdebug 3.1.0

Install Xdebug in your docker container using Dockerfile

RUN pecl install xdebug-3.0.1 && docker-php-ext-enable xdebug

Configure php.ini with following:

[xdebug]
xdebug.mode = debug
xdebug.start_with_request = yes
xdebug.discover_client_host = 1

Go to PHPStorm - Settings - PHP - Debug - Xdebug and set the port to 9003 (by default)

PHPStorm

That's it (:

If you want to enable/disable debugger only when you need it: just install a browser extension called "Xdebug helper", select "Debug" and remove "xdebug.start_with_request = yes" from php.ini

[xdebug]
xdebug.mode = debug
xdebug.discover_client_host = 1



回答2:


I will start saying big thanks to @LazyOne who spent some time helping me on this one until we make it to work. Here is how the config looks like for me currently and it is working fine:

zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20170718/xdebug.so
xdebug.mode=debug
xdebug.client_port=9005

You need also to update the Xdebug port at File | Settings | Languages & Frameworks | PHP | Servers to reflect the new one but also enable the option to listen on Xdebug3 incoming connections. (I believe it is enabled by default in PhpStorm 2020.3)

That is the setup for a backend project where no browser is in the middle, I have not tried but for those, you might need:

xdebug.start_with_request=yes

And also have File | Settings | Languages & Frameworks | PHP | Servers well configured.

Note: We found the host had enabled IPv6 and I disabled it and in addition, added the following setting to the IDE through Help > Edit Custom VM options: -Djava.net.preferIPv4Stack=true. After added the IP4 setting to the IDE I haven't tried re-enabling IPv6 and see if Xdebug 3 still working



来源:https://stackoverflow.com/questions/64878376/xdebug-step-debug-could-not-connect-to-debugging-client

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!