当 webhook 调用通过 MacOS 上的 ngrok 到达时如何让 Xdebug 连接

Posted

技术标签:

【中文标题】当 webhook 调用通过 MacOS 上的 ngrok 到达时如何让 Xdebug 连接【英文标题】:How to get Xdebug to connect when webhook call arrives via ngrok on MacOS 【发布时间】:2021-10-26 18:02:52 【问题描述】:

我目前在 MacOS 10.14.6 上运行 Apache 2.4、php 7.2 和 Xdebug 2.9

目前我只能在我的 mac 上运行的浏览器中输入一个 URL 时使用 Xdebug,该浏览器由运行在同一台上的 Apache 处理。

当 webhook 调用通过 ngrok 隧道到达我的 Mac 并由 Apache 处理时,我希望能够使用 Xdebug 单步执行 PHP 代码。

我进行了一些研究,但没有找到任何具体的信息来说明执行此操作所需的内容。这可能吗?

提前致谢。

【问题讨论】:

【参考方案1】:

是的。您可以将 Xdebug 配置为始终尝试进行调试会话,而不是依赖浏览器的 GET/POST/COOKIE 参数。

您必须将xdebug.remote_autostart 设置为yes:https://2.xdebug.org/docs/all_settings#remote_autostart

您还需要将 xdebug.remote_host 设置为运行 IDE 的机器的 IP 地址(可能与运行 ngrok 的机器相同,我将 >,只是本地主机)。所以设置:xdebug.remote_host=localhost.

请注意,不再支持 Xdebug 2,我们建议您升级到 Xdebug 3。那里的配置名称将改为xdebug.start_with_request=yesxdebug.client_host=localhost(请参阅Upgrade Guide)。

Xdebug 3 还有一个新的xdebug_info() 函数,可以告诉您它是如何配置的,以及它尝试连接的对象(如果有的话)。

【讨论】:

感谢您的回复德里克。我将设置 remote_autostart 并查看它是否有效。我意识到 Xdebug 3 现在是最新的,但需要将我的旧环境保留一段时间。将尽可能升级。

以上是关于当 webhook 调用通过 MacOS 上的 ngrok 到达时如何让 Xdebug 连接的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Discord (webhook) 上的嵌入消息中读取特定文本

PayPal webhook 所有事件仍处于待处理状态

测试是否在Laravel中调用webhook路由

Facebook API页面提要没有向我的webhook发送信息?

通过JAVA连接SAP (sapjco3.jar在Windows和MacOS上的配置)

macOS 上的 gettimeofday() 是不是使用系统调用?