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

4
我在设置 php cli 应用程序调试方面遇到了麻烦。我使用 Mac OS,其中包含 Ubuntu 环境的 Vagrant,以及其中运行 PHP 应用程序的 Docker 容器。

之前(在应用程序完全在 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容器内部的PHP解释器。 - Albert Tobac
2个回答

3
您好,以下是您需要翻译的内容:
在 Docker 容器中,请不要使用 remote_host。此外,您无需在 Docker 或 Vagrant 中公开任何其他端口。
以下是适用于 PHP 5.6 的 xdebug.ini 文件。
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 版本)已正确配置:
- Languages & Frameworks -> PHP -> Servers -> localhost -> localhost : 80 Xdebug - Languages & Frameworks -> PHP -> Debug -> Xdebug -> Debug port: 9000 - Languages & Frameworks -> PHP -> Debug -> Xdebug -> Can accept external connections - Languages & Frameworks -> PHP -> Debug -> DBGp Proxy -> Port 9000
完成以上步骤后,在 PhpStorm 工具栏中找到“Listen for debugger connections”图标并单击它。
如果要从命令行调用,请记得包含 XDEBUG_SESSION cookie。
curl 'http://localhost' -sSLI -H 'Cookie: XDEBUG_SESSION=xdebug'

如果您使用的是Firefox浏览器,请安装最简单的Xdebug插件,并在工具栏中启用。


我刚刚意识到你在运行PHP-CLI脚本...只需要将我的'xdebug.ini'文件中的内容翻译成你的'export XDEBUG_CONFIG',然后它应该能正常工作。 - Daniel Stefaniuk
我有点困惑,应该在哪里使用这个“export XDEBUG_CONFIG”?是在 Docker 容器内部吗? - Albert Tobac
你需要设置PHP脚本的运行环境,我猜它应该是在Docker里面。 - Daniel Stefaniuk
我使用了错误的IP地址,我需要使用192.168.10.1而不是192.168.10.10。无论如何,感谢您的帮助。 - Albert Tobac

3
在我的情况下,通过Web浏览器进行调试效果很好,但CLI调试(phpunit)的问题就出现了。这是因为xdebug在路径映射方面会出错,你需要显式地告诉Docker。
你需要告诉Docker应该使用PHPStorm中的哪个服务器配置,只需在Docker容器内导出该环境变量即可。
export PHP_IDE_CONFIG="serverName=<server-name>"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接