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

Debug PHP cli application inside docker with PhpStorm

我在设置调试 php cli 应用程序时遇到了麻烦。我在 Mac OS 上工作,这里有 Vagrant,里面有 Ubuntu,在这个 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 应用程序?

在您的 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 -> 服务器 -> 本地主机 -> 本地主机: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 并在工具栏中启用它。

就我而言,通过网络浏览器进行调试效果很好,问题来自 CLI 调试 (phpunit)。这是因为 xdebug 迷失了路径映射,你需要明确告诉 docker.

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

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