将 xdebug 与前端 js SPA 一起使用?
Using xdebug with a front-end js SPA?
当我直接访问我的服务器(通过 homestead/vagrant 设置的 IP 的虚拟主机条目)时,我的 xdebug 工作得很好。但是,我有一个分离的前端,我在 localhost:8080 上 运行,它与 laravel 后端服务器通信,但 xdebug 不会触发这些请求。我 认为 我只需要在来自前端的请求中设置 cookie XDEBUG_SESSION=PHPSTORM
,但是我不确定如何使用 vue-resource 来做到这一点,因为我在文档中没有看到任何内容。我尝试了以下方法:
Vue.http.headers.common['Cookie'] = 'XDEBUG_SESSION=PHPSTORM'
然而,chrome 警告我 Refused to set unsafe header "Cookie"
。有人知道我可以尝试的其他方法吗?
除了使用 COOKIE 或 GET/POST 参数之外的几种可能的方法。
在 php.ini 中使用 xdebug.remote_autostart = 1
。此选项指示 Xdebug 尝试调试每个请求(不管 cookie 或 GET/POST 参数)。
不要忘记重新启动您的 Web 服务器/PHP 以便它会读取您的新配置文件。
缺点:将尝试调试 每个请求,即使不需要调试,因此您可能会在 Xdebug 尝试建立调试连接时看到大约 1 秒的延迟。
在实际的 PHP 代码中放置 xdebug_break();
:一个编程断点,如果尚未建立调试会话,它将启动调试会话,并将在该行停止。
缺点:需要为此编辑 PHP 代码。
详细说明@LazyOne 的答案我想补充一点,对于 xDebug v3+ 你应该使用
xdebug.start_with_request=yes
而不是
xdebug.remote_authostart=1
当我直接访问我的服务器(通过 homestead/vagrant 设置的 IP 的虚拟主机条目)时,我的 xdebug 工作得很好。但是,我有一个分离的前端,我在 localhost:8080 上 运行,它与 laravel 后端服务器通信,但 xdebug 不会触发这些请求。我 认为 我只需要在来自前端的请求中设置 cookie XDEBUG_SESSION=PHPSTORM
,但是我不确定如何使用 vue-resource 来做到这一点,因为我在文档中没有看到任何内容。我尝试了以下方法:
Vue.http.headers.common['Cookie'] = 'XDEBUG_SESSION=PHPSTORM'
然而,chrome 警告我 Refused to set unsafe header "Cookie"
。有人知道我可以尝试的其他方法吗?
除了使用 COOKIE 或 GET/POST 参数之外的几种可能的方法。
在 php.ini 中使用
xdebug.remote_autostart = 1
。此选项指示 Xdebug 尝试调试每个请求(不管 cookie 或 GET/POST 参数)。不要忘记重新启动您的 Web 服务器/PHP 以便它会读取您的新配置文件。
缺点:将尝试调试 每个请求,即使不需要调试,因此您可能会在 Xdebug 尝试建立调试连接时看到大约 1 秒的延迟。
在实际的 PHP 代码中放置
xdebug_break();
:一个编程断点,如果尚未建立调试会话,它将启动调试会话,并将在该行停止。缺点:需要为此编辑 PHP 代码。
详细说明@LazyOne 的答案我想补充一点,对于 xDebug v3+ 你应该使用
xdebug.start_with_request=yes
而不是
xdebug.remote_authostart=1