Iva*_*hko 6 php xdebug nginx setcookie
我使用PhpStorm,xdebug和nginx + php-fpm进行远程调试.当我传入XDEBUG_SESSION_START=my_ide_key请求GET参数时,Nginx使用502错误代码(Bad Gateway)进行调用.同时我在IDE中的代码断点工作正常.当我没有传递XDEBUG_SESSION_START参数nginx响应格式良好的HTML和代码200.但没有这个参数显然没有调试.
在nginx错误日志中,我看到有关从上游收到的大标头的通知.我尝试在php-fpm和nginx之间转储通信,只有一个不同的东西是一个Set-Cookie头:
Set-Cookie: XDEBUG_SESSION=666; expires=Mon, 16-Sep-2013 16:07:28 GMT; path=/
Run Code Online (Sandbox Code Playgroud)
我试着找到这个标题出现在响应中的时间.我发现在我的smarty插件Smarty_Internal_Template析构函数中(在我的启动脚本的最后一行代码行之后),如果我调用,headers_list()我会看到大量的Set-Cookie标头(相等的析构函数调用和Set-Cookie标头数量).我确信header('Set-Cookie: XDEBUG_SESSION=...')我的代码中没有一个显式调用.我尝试升级和降级xdebug版本但仍然具有相同的行为.放置代码remove_header('Set-Cookie')在Smarty_Internal_Template解决了我的问题,不过这是丑陋的黑客!
有关这种奇怪情况的任何想法?
小智 1
我建议在这种情况下不要使用 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,根据我的经验,代码最终会在服务器上执行,但速度会非常慢。
有几次我错误地将其视为性能问题并浪费了大量时间。
| 归档时间: |
|
| 查看次数: |
1440 次 |
| 最近记录: |