如何通过 CURL 从 Vagrant 的 SSH 中触发 Xdebug?
How do I trigger Xdebug from within a Vagrant's SSH via CURL?
所以我有一个 Vagrant 驱动的实例,运行宁两个项目,并且一切顺利。我的项目有一个服务器实例和一个客户端实例。他们通过 REST 进行通信......并且一切都很好。
所以,我已经正确设置了 Xdebug - 我知道这一点,因为如果我从 外部 Homestead 使用 CLI cURL 调用我的 Laravel 客户端实例,传递 ?XDEBUG_SESSION_START=vagrant,它在 PhpStorm 中获取它,我可以正常调试:
curl -v http://clientproject.dev?XDEBUG_SESSION_START=vagrant
现在,如果我从 Homestead 的 CLI 中进行完全相同的调用(即我已经通过 SSH 连接到 Vagrant框,和 运行 curl 命令,如上所示),它不会触发。这对我来说毫无意义
我在网上搜了很多遍,希望各位好心的市民遇到过这个问题?
我真的很想要这个,这样我就可以让我的服务器实例使用 XDEBUG cookie 调用我的客户端实例,这样在开发过程中,它可以让我的开发人员更轻松地进行调试。
好的,在深入了解并进一步了解 Xdebug 的工作原理后,我意识到它不起作用,因为要使 Xdebug 工作,发起调用必须与您的 IDE.
因为我在 Homestead VM 中进行 CURL 调用,所以 XDebug 一直返回到 IDE。
要更正此问题,您必须在 curl 调用中设置 header,如下所示:
curl -v http://myclient.dev?XDEBUG_SESSION_START=vagrant --header "X-Forwarded-For: 192.168.10.01"
当然,192.168.10.01 是 Vagrant 主机的 IP,即我的 IDE 所在的位置。
一切正常!
所以我有一个 Vagrant 驱动的实例,运行宁两个项目,并且一切顺利。我的项目有一个服务器实例和一个客户端实例。他们通过 REST 进行通信......并且一切都很好。
所以,我已经正确设置了 Xdebug - 我知道这一点,因为如果我从 外部 Homestead 使用 CLI cURL 调用我的 Laravel 客户端实例,传递 ?XDEBUG_SESSION_START=vagrant,它在 PhpStorm 中获取它,我可以正常调试:
curl -v http://clientproject.dev?XDEBUG_SESSION_START=vagrant
现在,如果我从 Homestead 的 CLI 中进行完全相同的调用(即我已经通过 SSH 连接到 Vagrant框,和 运行 curl 命令,如上所示),它不会触发。这对我来说毫无意义
我在网上搜了很多遍,希望各位好心的市民遇到过这个问题?
我真的很想要这个,这样我就可以让我的服务器实例使用 XDEBUG cookie 调用我的客户端实例,这样在开发过程中,它可以让我的开发人员更轻松地进行调试。
好的,在深入了解并进一步了解 Xdebug 的工作原理后,我意识到它不起作用,因为要使 Xdebug 工作,发起调用必须与您的 IDE.
因为我在 Homestead VM 中进行 CURL 调用,所以 XDebug 一直返回到 IDE。
要更正此问题,您必须在 curl 调用中设置 header,如下所示:
curl -v http://myclient.dev?XDEBUG_SESSION_START=vagrant --header "X-Forwarded-For: 192.168.10.01"
当然,192.168.10.01 是 Vagrant 主机的 IP,即我的 IDE 所在的位置。
一切正常!