gpt4 book ai didi

nginx - Xdebug 设置 cookie XDEBUG_SESSION 次数太多

转载 作者:可可西里 更新时间:2023-11-01 13:30:36 28 4
gpt4 key购买 nike

我使用 PhpStorm、xdebug 和 nginx + php-fpm 进行远程调试。当我在请求 GET 参数中传递 XDEBUG_SESSION_START=my_ide_key 时,Nginx 返回 502 错误代码(Bad Gateway)。同时,我在 IDE 中的代码断点工作正常。当我不传递 XDEBUG_SESSION_START 参数时,nginx 会以格式良好的 HTML 和代码 200 进行响应。但是很明显,没有此参数就无法进行调试。

在 nginx 错误日志中,我看到关于从上游收到的大 header 的通知。我尝试转储 php-fpm 和 nginx 之间的通信,只是一个不同的东西是一个 Set-Cookie header :

Set-Cookie: XDEBUG_SESSION=666; expires=Mon, 16-Sep-2013 16:07:28 GMT; path=/

我尝试查找此 header 何时出现在响应中。我发现在我的 smarty 插件 Smarty_Internal_Template 析构函数中(在我的启动脚本的最后一行代码之后)如果我调用 headers_list() 我会看到越来越多的 Set-Cookie header (相等的析构函数调用和 Set-Cookie header 数量)。我确定我的代码中没有显式 header('Set-Cookie: XDEBUG_SESSION=...') 调用。我尝试升级和降级 xdebug 版本但仍然有相同的行为。将代码 remove_header('Set-Cookie') 放在 Smarty_Internal_Template 中可以解决我的问题,但这是丑陋的技巧!

对这种奇怪的情况有什么想法吗?

最佳答案

我建议在这种情况下不要使用 XDEBUG_SESSION_START。在我看来,XDEBUG_SESSION_START 正在服务器端触发一些代码执行以设置 cookie。这会干扰 smarty 模板代码。

在我使用 PHPStorm 的所有经验中,我发现打开 xdebug 的最佳方法是通过书签,您可以在此处生成它:

https://www.jetbrains.com/phpstorm/marklets/

小书签在浏览器本身中设置 cookie。因此,服务器中没有执行任何代码来设置 XDEBUG_SESSION 和路径变量,这可以减少或消除对 smarty 代码的干扰。

此外,使用 PHPStorm 的一个技巧是确保 PHPStorm 已启动并正在运行,并且 PHPStorm 和 php-fpm 之间的网络连接正常工作(我认为这就是您与 nginx 结合使用的内容)。

如果 php-fpm 无法连接到 PHPStorm,根据我的经验,代码最终会在服务器上执行,但速度会很慢。

有几次我将此错误地视为性能问题并浪费了很多时间。

关于nginx - Xdebug 设置 cookie XDEBUG_SESSION 次数太多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18831779/

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