【问题标题】:Using xdebug with a front-end js SPA?将 xdebug 与前端 js SPA 一起使用?
【发布时间】:2017-03-08 02:28:57
【问题描述】:

当我直接访问我的服务器时(通过 homestead/vagrant 设置的 IP 的 vhost 条目),我的 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"。有人对我可以尝试的其他方法有什么想法吗?

【问题讨论】:

  • 顺便说一句,我刚刚测试过,我可以手动添加 ?XDEBUG_SESSION_START=PHPSTORM 作为获取参数,它成功触发 xdebug,所以我很确定我是否可以弄清楚如何在每个请求中添加该 cookie vue-resource 我应该是金色的
  • a) xdebug.remote_autostart = 1 在您的 php.ini 中 -- 将尝试调试每个请求(无论 cookie 或 GET/POST 参数如何)b) 将xdebug_break(); 放置在实际的 PHP 代码中——程序断点也将启动调试会话(缺点——需要为此编辑 PHP 代码)PS 这些是通用解决方案,与使用的编辑器(在我们的例子中是 PhpStorm)。
  • 这很好用。不得不添加xdebug_break() 有点烦人,但我会用它代替其他东西。如果您想重新发布作为答案,我会接受!
  • FWIW 我刚刚添加了一个正常的断点,没有xdebug_break(),它仍然有效,很好!
  • 如果你做了 A) B) 那就不足为奇了——它们是替代方法(所以应该阅读a) OR b)

标签: php phpstorm vue.js xdebug


【解决方案1】:

使用 COOKIE 或 GET/POST 参数之外的几种可能方法。

  1. 在您的 php.ini 中使用 xdebug.remote_autostart = 1。此选项指示 Xdebug 尝试调试每个请求(无论 cookie 或 GET/POST 参数如何)。

    不要忘记重新启动您的网络服务器/PHP,以便它会读取您的新配置文件。

    缺点:即使不需要调试,也会尝试调试每个请求,因此当 Xdebug 尝试建立调试连接时,您可能会看到大约 1 秒的延迟。

  2. 在实际的 PHP 代码中放置 xdebug_break();:一个编程断点,如果尚未建立调试会话,它将在该行停止并停止。

    缺点:需要为此编辑 PHP 代码。

【讨论】:

    【解决方案2】:

    @LazyOne 详细阐述了答案我想补充一点,对于 xDebug v3+ 你应该使用

    xdebug.start_with_request=yes

    而不是

    xdebug.remote_authostart=1

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-19
      • 2020-10-03
      • 1970-01-01
      • 1970-01-01
      • 2011-07-13
      • 2011-09-25
      • 1970-01-01
      相关资源
      最近更新 更多