92

如何让 REST 客户端(例如内置于PHPStormPOSTman的客户端)与 XDebug 一起使用?

在我当前的 XDebug 设置中,使用 PHPStorm 和提供的 Bookmarklet我能够让它在 Chrome 和 Firefox 中运行 - 但是一旦我尝试使用 POSTman 或任何其他 REST 客户端,我无法弄清楚如何开始。

干杯。

4

6 回答 6

221

您可以使用以下方法之一:

  1. 配置您的 Xdebug(通过编辑 php.ini)尝试调试每个php 脚本。关键选项:

    • Xdebug v2:xdebug.remote_autostart = 1
    • Xdebug v3:xdebug.start_with_request = yes
  2. 将 Xdebug 会话启动参数添加到实际 URL ( XDEBUG_SESSION_START={{KEY}}-- http://xdebug.org/docs/remote ),例如:?XDEBUG_SESSION_START=PHPSTORM

  3. 将 Xdebug cookie 作为标题之一传递(例如,由小书签或浏览器扩展设置的标题)。

为此:确保在 PhpStorm ( Run | Start Listen for PHP Debug Connection) 中预先激活“电话手柄”图标。


PS如果您使用的是PostmanInsominia或类似的(另一个 REST 客户端),那么 IMO 最好/最透明的方式是使用 Xdebug cookie。您很可能已经在使用单独的环境(例如“dev”、“test”、“production”),因此您只能在需要的地方使用此类 cookie(当然取决于使用的工具和版本)。

这样就无需编辑 URL(即使您将它作为“条件参数”:在某些环境中存在而在另一个环境中不存在)或将 Xdebug 配置为“调试所有请求”。

来自我的 Postman 的此类 Xdebug cookie 的示例(根据需要对其进行编辑;此处为本地some-domain.local.test假域设置):

XDEBUG_SESSION=value; Path=/; Domain=.some-domain.local.test; Expires=Tue, 19 Jan 2038 03:14:07 GMT;

由于主机 URL 应该是您的环境的一部分(例如,端点 URL 将类似于{{host}}/api/v1/welcome),因此此类 cookie 将仅发送到开发域而不是生产域。

于 2013-10-02T22:35:52.340 回答
9

只需?XDEBUG_SESSION_START=filter_string在网址末尾添加,例如:

https://new-supplier.local/api/login?XDEBUG_SESSION_START=PHPSTORM

PHPSTORM 是我的默认过滤器字符串,你可以使用任何你想要的。您的编辑器应该设置为通过 IDE 键(过滤器字符串)过滤连接,仅此而已。您应该能够以与 Chrome 或 FF 相同的方式进行调试。

于 2021-05-14T13:27:35.887 回答
3

警告

xdebug >= 3.0 更改了 php.ini 中的参数。升级xdebug后,这里的大部分答案都不相关了。

参考: https ://xdebug.org/docs/upgrade_guide

基本上,您需要在 php.ini 中添加类似这样的内容:

xdebug.mode=develop,gcstats,coverage,profile,debug
xdebug.start_with_request=1
xdebug.idekey=PHPSTORM
于 2020-12-18T13:03:21.220 回答
2

这让我发疯了。我刚刚更新到 PHP 7.1 并且工作的 xdebug 不再工作。我更新了xdebug.so文件 (Linux) 并php --version指出 xdebug 确实正在加载并且正在工作。但是当我使用 Postman 时,调试器从未启动。

这是解决方案。如果您使用 Apache 作为您的服务器,那么您需要启用 PHP 7.1 模块并重新启动 Apache:sudo service apache2 restart

于 2017-01-07T01:10:39.750 回答
1
xdebug.remote_timeout = 60000

为我工作。由于我的 Mac 非常慢,并且远程调试器在 200 毫秒后超时(默认值)

于 2018-07-17T15:04:51.310 回答
0

最终让我的 Postman/PHPStorm Xdebug 工作的是在 PHPStorm 中添加PHP 远程调试配置:

运行 -> 编辑配置 -> + -> PHP 远程调试

我只是将名称设置为localhost并保存 - 没有IDE Key等。

于 2021-09-29T11:04:28.103 回答