【问题标题】:I want to debug every HTTPs to my web server with PhpStorm + Xdebug我想使用 PhpStorm + Xdebug 调试我的 Web 服务器的每个 HTTP
【发布时间】:2020-06-15 09:38:38
【问题描述】:

我有一个 LAMP Web 服务器作为 Web 服务器运行。我正在使用 Xdebug 和 PhpStorm 调试它的 PHP 代码。

我使用启用了 Xdebug 助手的 Firefox 向 Web 服务器发送 HTTP 请求,PhpStorm 捕获该请求并开始调试。

现在,我希望 PhpStorm 捕获和调试对 Web 服务器的任何 HTTP 请求(不仅仅是来自 Firefox+Xdebug 助手的请求)。例如,我想通过 CURL/BURPSUITE 发送 HTTP 请求以进行调试。

我该怎么做?

【问题讨论】:

  • 嗨,NTH,您看过 Wireshark 之类的工具吗?
  • 1) 在 PhpStorm 中使用“电话句柄”图标,以便侦听传入的调试连接。 2)在你的 php.ini 中使用xdebug.remote_autostart=1(参见 Derick 的回答)——这告诉 Xdebug 尝试调试每个脚本。或者,您也可以将xdebug_break(); 放入您的实际 PHP 代码中。 3)除此之外(如果你想控制要调试的连接)你必须在你的请求中传递一个 cookie 或 GET/POST 参数(见 Viney 的回答)
  • 嗨 LazyOne,您的回答是正确的!非常感谢!

标签: debugging phpstorm xdebug remote-debugging


【解决方案1】:

如果您希望 Xdebug 始终(尝试)建立连接,只需在 php.ini 中设置 xdebug.remote_autostart=1。然后无论 cookie(Firefox 扩展设置的)是否存在,Xdebug 都会连接到您的 IDE。

【讨论】:

  • 我设置了这个选项,我尝试通过cURL向服务器发送一个简单的请求,输出显示“301 Moved Permanent”
  • Xdebug 没有设置这些头文件。而且,这听起来像是一个普通的 HTTP 重定向——如果你问得好,cURL 可能会告诉你这样做。
  • 嗨 Derick,现在效果很好,非常感谢您的好回答!
【解决方案2】:

xdebug helper 浏览器扩展通过在 HTTP 请求中设置一个 cookie 来工作,因此您可以尝试设置一个 cookie,但还有更简单的方法 - 只需附加此 url 参数 (XDEBUG_SESSION_START),它就会触发 xdebug

$url='http://mywebsite.com?XDEBUG_SESSION_START=phpstorm';

curl_setopt($handle, CURLOPT_URL, $url);

它可以在 curl 和浏览器中使用

这里phpstorm是我在php.ini中配置的idekey,所以根据你的设置更改它

【讨论】:

    猜你喜欢
    • 2020-02-14
    • 2016-08-09
    • 2013-10-09
    • 2019-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-04
    • 2017-07-20
    相关资源
    最近更新 更多