使用PhpStorm在docker中调试PHP cli应用程序

时间:2016-04-16 11:06:25

标签: php docker vagrant phpstorm

我在设置调试php cli应用程序时遇到了麻烦。我在Mac OS上工作,我在这里有Ubuntu的Vagrant,在这个Ubuntu里面我有docker。所以其中一个docker容器运行我的php应用程序,PHP解释器就在那里。

之前(当应用程序完全在Vagrant机器中时)我正在使用此命令来调试我的cli应用程序,但现在它不起作用。:

  

export XDEBUG_CONFIG =" remote_enable = 1 remote_mode = req remote_port = 9000 remote_host = 192.168.10.10 remote_connect_back = 0"

如何设置PhpStorm来调试我的php cli app?

2 个答案:

答案 0 :(得分:1)

您的Docker容器内部不要使用remote_host。此外,您不必在Docker或Vagrant中公开任何其他端口。

这是我的 xdebug.ini 文件,适用于PHP 5.6

zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20131226/xdebug.so
xdebug.remote_enable=1
xdebug.remote_autostart=0
xdebug.remote_handler=dbgp
xdebug.remote_port=9000
xdebug.remote_connect_back=1

确保 PhpStorm (在我的情况下为2016.1)配置正确

  • 语言&框架 - > PHP - >服务器 - > localhost - > localhost:80 Xdebug
  • 语言&框架 - > PHP - >调试 - > Xdebug - >调试端口:9000
  • 语言&框架 - > PHP - >调试 - > Xdebug - >可以接受外部连接
  • 语言&框架 - > PHP - >调试 - > DBGp代理 - >港口9000

完成此操作后,在工具栏中的PhpStorm中找到侦听调试器连接图标,然后单击它。

如果您想从命令行调用它,请记住包含XDEBUG_SESSION cookie,即

curl 'http://localhost' -sSLI -H 'Cookie: XDEBUG_SESSION=xdebug'

如果您使用 Firefox 安装The easiest Xdebug并在工具栏中启用它。

答案 1 :(得分:0)

就我而言,通过Web浏览器进行调试非常有效,CLI调试(phpunit)带来了问题。这是因为xdebug丢失了路径映射,因此您需要明确告知docker。

您需要告诉 Docker ,应该在PHPStorm中使用哪个服务器配置,只需将该env变量导出到您的Docker容器中即可。

export PHP_IDE_CONFIG="serverName=<server-name>"