在Docker容器内使用PhpStorm调试Symfony CLI应用程序

在Docker容器内使用PhpStorm调试Symfony CLI应用程序,php,symfony,docker,phpstorm,xdebug,Php,Symfony,Docker,Phpstorm,Xdebug,我当前的设置涉及PhpStorm IDE,我在其中导入了基本上是CLI工具的Symfony 3项目。在主机上,我没有安装PHP,所以我从安装了PHP和Xdebug的Docker容器运行应用程序 从Docker容器调试web应用程序没有问题,但是使用Symfony和这个CLI工具,它看起来有点棘手 我的问题是如何正确设置并从PhpStorm调试它?我试图创建一个新的调试配置(PHP远程调试),但未触发断点。支持您按照以下链接中提到的说明进行操作: 或者类似的问题 然后,您需要遵循以下步骤:

我当前的设置涉及PhpStorm IDE,我在其中导入了基本上是CLI工具的Symfony 3项目。在主机上,我没有安装PHP,所以我从安装了PHP和Xdebug的Docker容器运行应用程序

从Docker容器调试web应用程序没有问题,但是使用Symfony和这个CLI工具,它看起来有点棘手


我的问题是如何正确设置并从PhpStorm调试它?我试图创建一个新的调试配置(PHP远程调试),但未触发断点。

支持您按照以下链接中提到的说明进行操作:

或者类似的问题

然后,您需要遵循以下步骤:

步骤1: 通过运行以下命令,让shell访问您的容器:

docker exec -ti ^container_id^ /bin/sh
或者如果运行基于debian/ubuntu的系统(或者您手动安装了
bash
):

可以通过
docker ps
命令找到
^container\u id^
,它是表格的第一列。如果在一个小窗口上运行,只需将int导入
less-S
即可生成命令:

docker ps | less -S
然后导出以下环境变量:

export PHP_IDE_CONFIG="serverName=0.0.0.0:5092"
export XDEBUG_CONFIG="idekey=PHPSTORM"
请记住,如图所示,在
服务器
部分中设置指定的正确值:

这一点很重要,以免遇到上述问题


然后,只需在phpstorm中启用调试器listentin,并像运行symfony应用程序时那样生成cli。

如果您说这是一个cli工具,为什么要尝试创建“PHP远程调试”配置?您应该创建PHP远程解释器并使用“PHP脚本”类型的配置。。它用于运行/调试CLI脚本(以便IDE在该Docker容器中执行)。我成功地触发了调试器,但现在我遇到了时区
PHP致命错误:未捕获异常“exception”,消息为“DateTime::\uu construct():依赖系统的时区设置是不安全的。您*必须*使用date.timezone设置或date\u default\u timezone\u set()函数。如果您使用了这些方法中的任何一种,但仍然收到此警告,则很可能拼写错误了时区标识符。
我可以1000%确认php.ini已正确设置时区,并且php-I显示已加载。好的,我通过将时区传递为-d选项(在phpstorm解释器选项中配置)解决了此问题但这仍然很奇怪,因为我的php.ini包含了这些设置。似乎完全被忽视了。
export PHP_IDE_CONFIG="serverName=0.0.0.0:5092"
export XDEBUG_CONFIG="idekey=PHPSTORM"