Xdebug 已安装但似乎无法与 PhpStorm 一起使用

Xdebug is installed but does not seem to be working with PhpStorm

我下载了Xdebug好像安装好了,我的phpinfo()里面有Xdebug,设置如下:

phpinfo() xdebug settings 2/2

我已经尝试添加参数 http://localhost/test.php?XDEBUG_SESSION=PHPSTORM,并使用 Xdebug Chrome 扩展来更改 phpinfo() 中的 IDE KEY,但我仍然无法获取Xdebug 触发。

PhpStorm 正在侦听端口 9000,我已经使用 lsof -i :9000 确认了这一点,并且 Xdebug 也根据 phpinfo() 连接到本地主机 9000。

我不明白为什么 Xdebug 没有连接到 PhpStorm。如果您需要更多信息,请告诉我任何帮助。

编辑: 我试图将我的 xdebug 调试信息发送到日志文件,但是当我浏览到 php 页面时日志文件是空的。我知道错误日志设置正确,因为日志文件的路径显示在 phpinfo().

编辑: 我更改了调试日志的位置,这是针对一个请求的输出转储:

[21595] Log opened at 2019-11-27 15:57:20
[21595] I: Checking remote connect back address.
[21595] I: Checking header 'HTTP_X_FORWARDED_FOR'.
[21595] I: Checking header 'REMOTE_ADDR'.
[21595] I: Remote address found, connecting to ::1:9000.
[21595] W: Creating socket for '::1:9000', poll success, but error: Operation now in progress (19).
[21595] E: Could not connect to client. :-(
[21595] Log closed at 2019-11-27 15:57:20

第一步是为此类不成功的调试会话启用并收集 Xdebug 日志。如果它保持为空,请确保任何人都可以写入该文件,而不仅仅是当前用户(另外不要使用相对路径或 ~)。这样的日志会告诉你发生了什么,并会提供关于之后要看什么的线索。

其他:

  • 您启用了 xdebug.remote_connect_back 选项...忽略了 xdebug.remote_host 设置的值。它通常会选择正确的 IP,但最好在此处确定(Xdebug 日志会准确说明它检测到的内容)。

  • 最好使用 IPv4 地址(即 127.0.0.1 而不是 localhost),因为在某些系统上 IPv6 优先于 IPv4 和 Xdebug(或 PhpStorm)有一些问题IPv6(至少在某些系统上)。

  • 使用端口 9001 或其他端口而不是默认的 9000 也是有意义的,因为 php-fpm 也默认使用该端口,您可能会在某个时候安装它。