PHPStorm 忽略来自 Guzzle 的 Xdebug 请求

PHPStorm ignores Xdebug request from Guzzle

我已将 Guzzle 设置为在向我的 API 发出请求时包含 Xdebug cookie。我已将以下行添加到我的 /etc/httpd/conf/httpd.conf 以在请求通过时查看 cookie:

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Cookie}i\"" common

如果我通过 Chrome REST 控制台使用此 cookie 发出请求,xdebug 会命中断点。访问日志中的请求是:

192.168.50.1 - - [17/Mar/2015:15:47:36 +0000] "GET /app_dev.php/user?id=1&authuserid=1 HTTP/1.1" 301 569 "XDEBUG_SESSION=PHPSTORM"

当 Guzzle 发出完全相同的请求时,没有命中断点。

127.0.0.1 - - [17/Mar/2015:15:42:17 +0000] "GET /app_dev.php/user?id=1 HTTP/1.1" 301 501 "XDEBUG_SESSION=PHPSTORM"

显然我们缺少 authuserid 作为 GET 参数,但这不应该影响 xdebug。如果这被 Guzzle 设置为隐藏的 cookie,也许那就是我需要设置 xdebug 会话的地方?

我以前用过这个,但现在我完全迷失了。

我的 xdebug 配置(/etc/php.d/15-xdebug.ini 或)是:

zend_extension="/usr/lib64/php/modules/xdebug.so"
xdebug.idekey="PHPSTORM"
xdebug.remote_host=192.168.50.1
xdebug.remote_port=9000
xdebug.remote_connect_back=1
xdebug.remote_enable=1
xdebug.profiler_enable=1
xdebug.profiler_output_dir="<AMP home\tmp>"

将我的配置减少到:

zend_extension="/usr/lib64/php/modules/xdebug.so"
xdebug.remote_host=192.168.50.1
xdebug.remote_port=9000
xdebug.remote_enable=1

允许我的 API 连接到 xdebug。

通过排除过程,至少有一个罪魁祸首是:

xdebug.remote_connect_back=1

xdebug.remote_connect_back
Type: boolean, Default value: 0, Introduced in Xdebug > 2.1 If enabled, the xdebug.remote_host setting is ignored and Xdebug will try to connect to the client that made the HTTP request. It checks the $_SERVER['REMOTE_ADDR'] variable to find out which IP address to use. Please note that there is no filter available, and anybody who can connect to the webserver will then be able to start a debugging session, even if their address does not match xdebug.remote_host.

虽然我仍然不明白为什么在这种情况下这会影响 xdebug 的功能,因为应用程序和 API 都在我的虚拟机上。