gpt4 book ai didi

debugging - 理解消息 "Cannot accept external Xdebug connection: Cannot evaluate expression ' isset($_SERVER ['PHP_IDE_CONFIG' ] )'"

转载 作者:行者123 更新时间:2023-12-01 23:03:45 24 4
gpt4 key购买 nike

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

我唯一的问题是不时出现消息“无法接受外部 Xdebug 连接:无法评估表达式 'isset($_SERVER['PHP_IDE_CONFIG'])'”。

我已经看到了该问题的一些解决方案 here并且也在 JetBrains 支持( herehere )中,但我的问题有点不同,因为我可以正常调试,但消息继续出现。

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

event log of phpstorm

仅供引用,我正在调试网络服务,因此,我将 Xdebug 配置为监听所有 HTTP 请求,单击“开始监听 PHP 调试连接按钮”(图中绿色),然后通过高级 Rest 客户端(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

最佳答案

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

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

最简单的解决方案是 启用 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 脚本。我知道您启用此功能是为了简化您的开发生活(因为有时以其他方式(例如 cookie 或 GET/POST 参数)传递 xdebuger“立即调试”标志既困难又不方便),但正如您所见,这会造成一些不便.

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

关于debugging - 理解消息 "Cannot accept external Xdebug connection: Cannot evaluate expression ' isset($_SERVER ['PHP_IDE_CONFIG' ] )'",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34997127/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com