在phpstorm和docker中的xdebug

时间:2015-10-09 12:55:53

标签: php docker phpstorm xdebug

我设法将xdebug与docker和phpstorm结合使用。对于http调用... IE

http://192.168.99.100:8081/?XDEBUG_SESSION_START=PHPSTORM

但是当我尝试运行我的phpunit测试时,它没有连接到phpstorm

我在phpstorm中执行了正确的目录映射,并在docker-instance export XDEBUG_CONFIG="idekey=PHPSTORM"上运行了以下内容

我也试过我的docker:导出PHP_IDE_CONFIG ='serverName = web.docker'并在phpstorm web.docker上命名服务器配置。仍然在http而不是CLI工作

那么我可以让phpstorm和xdebug一起使用命令行吗?

这是我的档案:/etc/php5/cli/conf.d/20-xdebug.ini

zend_extension=xdebug.so
xdebug.remote_enable=1
xdebug.idekey=PHPSTORM
xdebug.remote_connect_back=1
xdebug.remote_host=172.17.42.1
dxdebug.remote_autostart=1

当我打开日志记录,并使用xdebug_remote_host IP地址时,我得到了

W: Remote address not found, connecting to configured address/port: localhost:9000. :-|
E: Could not connect to client. :-(
Log closed at 2015-10-13 12:20:39

Log opened at 2015-10-13 12:22:58
I: Checking remote connect back address.
W: Remote address not found, connecting to configured address/port: 172.17.42.1:9000. :-|
E: Could not connect to client. :-(
Log closed at 2015-10-13 12:22:58

Log opened at 2015-10-13 12:23:58
I: Checking remote connect back address.
W: Remote address not found, connecting to configured address/port: 192.168.99.100:9000. :-|
E: Could not connect to client. :-(
Log closed at 2015-10-13 12:23:58

解决方案(编辑) 通过启用xdebug日志记录,我看到它已成功连接到192.168.99.1,因此解决了问题

xdebug.remote_host=192.168.99.1

3 个答案:

答案 0 :(得分:4)

现在我想到了两件事:

  1. xdebug.remote_host是否设置正确?对于HTTP链接,您提供了192.168.地址,作为回复它的172.17.地址。你可以在那个IP上ping你的主机吗?

  2. 在您的ini文件中,它显示为:

    dxdebug.remote_autostart=1
    

    这只是一个错字,还是实际上在你的配置文件中?因为它应该在没有" d"的情况下阅读xdebug。在它面前。它应该是:

    xdebug.remote_autostart=1
    

    在执行脚本时,只应在添加选项时添加d,如下所示:

    php -dxdebug.remote_autostart=1 script.php
    
  3. 如果还没有帮助,请通过在配置中添加以下内容来启用远程日志:

    xdebug.remote_log = /var/log/xdebug_remote.log
    

    也许这有助于找到问题。

答案 1 :(得分:1)

对我来说有用的是使用此配置的ssh隧道 xdebug.remote_connect_back = 0 xdebug.remote_host = 127.0.0.1

请参阅:Xdebug with SSH tunnel on Docker for Mac

答案 2 :(得分:0)

自Docker-17.06以来,您可以通过静态主机名访问Container内部托管的服务:docker.for.mac.localhost

完整答案在这里:https://stackoverflow.com/a/48495802/1241980