了解消息"无法接受外部Xdebug连接:无法计算表达式'isset($ _ SERVER ['PHP_IDE_CONFIG'])'"

Jam*_*mes 3 debugging xdebug phpstorm

我正在使用PHPstorm作为我的主要PHP开发环境和XDebug来调试我的应用程序.

我唯一的问题是消息"无法接受外部Xdebug连接:无法计算表达式'isset($ _ SERVER ['PHP_IDE_CONFIG'])'"不时出现.

我已经在这里和JetBrains支持(这里这里)看到了一些问题的解决方案,但我的问题有点不同,因为我可以正常调试,但消息继续出现.

请参阅下面的事件日志的打印.显然,该消息每30分钟出现一次.

phpstorm的事件日志

仅供参考,我正在对一个web服务进行调试,因此,我将Xdebug配置为侦听所有HTTP请求,单击"开始侦听PHP调试连接按钮"(图中的绿色),然后通过Advannced Rest Client(Chrome)启动请求.

正如我所说,我可以毫无问题地进行调试,所以我只想了解这条消息.它会引起任何问题吗?难道我做错了什么?我可以禁用此消息吗?怎么样?

我在链接的问题中尝试了解决方案,但消息仍然存在.

这是我的Xdebug配置:

[Zend]
zend_extension="/usr/lib/php5/20131226/xdebug.so"
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.remote_autostart=1
xdebug.remote_connect_back=0
Run Code Online (Sandbox Code Playgroud)

Laz*_*One 9

您的描述(重复任务)+屏幕截图(完全每30分钟发生一次)表明您有一些任务由某些计划执行(系统范围的调度程序 - 您的Linux情况下的cron)并且它是用PHP编写的(要么PHP脚本被调用)直接由调度程序或作为主要任务中的一个步骤).

此类任务在CLI环境中执行(或者,对于您的情况更好的措辞,不在实际Web服务器的上下文中运行).当PhpStorm收到传入的调试请求(在IDE之外启动)时,它需要一些信息来确定要使用的设置(要使用的PHP | Servers条目).当PHP在Web服务器上下文中执行时,这些信息通常(大多数情况)已经存在,并且在终端(CLI)中执行时它不存在,因此您必须手动提供它.

最简单的解决方案是启用Ignore external connections through unregistered server configurations选项Settings/Preferences | Languages & Frameworks | PHP | Debug.请注意,如果您需要配置另一个服务器配置(对于大多数项目而言很少发生),您将不得不手动执行此操作,或者如果您需要IDE的帮助,请禁用此选项.


Cronjob是重复性的真正原因.另一个问题是xdebug 实际上试图调试它.理想情况下,它根本不应该发生,你最好以正常任务使用普通PHP安装(没有xdebug)和开发环境使用单独的PHP安装或至少使用单独的php.ini配置的方式配置你的环境.仅启用xdebug已使脚本运行速度降低2倍左右,例如,composer如果检测到xdebug已启用,则会通知您.

你有xdebug.remote_autostart=1.使用此xdebug尝试调试它执行的每个PHP脚本.我知道你已经启用了这个来简化你的开发生活(因为有时候通过xdebuger"现在调试这个"标志以其他方式(例如cookie或GET/POST param)很难和不方便)但是你可以看到它会造成一些不便.

这里可能的选项之一(除了前面提到的单独配置)是在您的实际PHP代码(程序断点)中xdebug.remote_autostart=0使用和使用xdebug_break();.但由于其他原因,这可能不方便 - 需要修改脚本源代码以启用/禁用调试.