XDebug 只写入 CLI 脚本的日志,而不写入浏览器请求

XDebug only writes to log for CLI scripts and not browser requests

我正在尝试诊断为什么 PhpStorm 似乎在一段时间后失去了与 Windows 上 Docker 容器中的 XDebug 3 运行 的连接,所以我有 xdebug.log=/path/to/xdebug.log.ini 文件中,我正在查看该日志文件。

XDebug 成功地对浏览器请求和 CLI 脚本进行了单步调试,但它仅在执行 CLI 脚本时写入日志。如果正在处理浏览器请求,则日志在整个调试步骤中保持不变。

为什么 CLI 与浏览器会对 XDebug 的日志记录产生影响?如何为浏览器请求启用它?

CLI 上的

PHP 和通过 Web 服务器 运行 的 PHP 可能具有不同的 INI 文件。您可以通过在 CLI 上使用 php --ini 或通过浏览器在 运行 的脚本中使用 phpinfo() 来检查使用了哪些。

如果他们使用相同的 INI 文件,请检查 xdebug.log 的值是否正确。在 CLI 上使用 php -m xdebug | grep log,或在脚本中再次使用 phpinfo()

如果这些都是正确的,那么也可能是权限问题。如果 /path/to/xdebug.log 是由 运行 的 CLI 命令的用户(可能是你)创建的,那么网络服务器用户也可能没有写入它的权限。您可以使用 ls -l /path/to/xdebug.

检查日志文件的所有者和访问权限

也有可能webserver用户连/path/to部分都没有访问权限,你可以用ls -l /path/to/检查一下,验证webserver用户是否是访问掩码的一部分.

如果这是您的个人机器(而不是任何共享的或生产中的机器),您可以使用 chmod 0666 /path/to/xdebug.log 修复 /path/to/xdebug.log 的权限,这应该授予所有用户对该文件的写入权限。