【发布时间】:2016-01-25 16:11:38
【问题描述】:
我使用 PHPstorm 作为我的主要 PHP 开发环境和 XDebug 来调试我的应用程序。
我唯一的问题是不时出现消息“无法接受外部 Xdebug 连接:无法评估表达式 'isset($_SERVER['PHP_IDE_CONFIG'])'”。
我已经看到了问题的一些解决方案here 以及 JetBrains 支持(here 和 here),但我的问题有点不同,因为我可以正常调试,但消息继续出现。
请参阅下面的事件日志打印。显然,该消息每 30 分钟出现一次。
仅供参考,我正在调试 Web 服务,因此,我将 Xdebug 配置为侦听所有 HTTP 请求,单击“开始侦听 PHP 调试连接按钮”(图中绿色),然后通过 Advanced Rest Client 启动请求(铬)。
正如我所说,我可以毫无问题地调试,所以我只想了解消息。它会引起任何问题吗?难道我做错了什么?我可以禁用此消息吗?怎么样?
我尝试了链接问题中的解决方案,但消息仍然存在。
这是我的 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
【问题讨论】:
-
听起来你有一些用 PHP 编写的计划任务(最常见的原因)(由调度程序直接调用作为步骤之一)在 CLi 环境中执行(或者更好地说,不在上下文中运行实际的 Web 服务器)。 PhpStorm 需要服务器名称来区分连接(使用什么“PHP | Server”条目等),在您的情况下(通常是远程 CLI)它不存在(这是绝对正常的,因为您需要根据您的链接手动提供此类信息)。
-
我可能只建议在
Settings/Preferences | Languages & Frameworks | PHP | Debug启用“通过未注册的服务器配置忽略外部连接”选项——应该帮助。请注意,如果您需要配置另一个服务器配置,则必须手动进行,或者如果您需要 IDE 的帮助,请禁用此选项。 -
这正是我的意思——你的系统范围的调度程序(在你的 Linux 案例中是 cron)
-
您可能的替代方案是:1) 在您的实际 PHP 代码中使用
remote_autostart=0并使用xdebug_break();(程序断点) 2) 具有不同的 PHP 安装(或至少不同的 php.ini 配置文件)为您开发的实际代码和用于普通任务的系统范围的 PHP(不应调试 - 没有 xdebug 没有问题(+ 代码运行速度大约快 2 倍)) -
我也有同样的问题。这肯定是由来自
/etc/cron.d/php5的09,39 * * * * root [ -x /usr/lib/php5/sessionclean ] && /usr/lib/php5/sessionclean引起的。但我已经在我的 PhpStrom 中签入了Ignore external connections...。