phpinfo能显示Xdebug状态吗_查xdebug扩展信息法【察调】

9次阅读

能,phpinfo()仅显示Xdebug是否加载,不显示调试功能启用状态或运行模式;需结合php -v、xdebug_info()、xdebug_break()及配置检查综合验证。

phpinfo能显示Xdebug状态吗_查xdebug扩展信息法【察调】

phpinfo() 能显示 Xdebug 状态吗

能,但只显示「是否已加载」,不显示「是否启用调试功能」或「当前运行模式」。phpinfo() 里出现 Xdebug 模块区块,仅代表扩展已成功载入;它不会告诉你 xdebug.mode=debug 是否生效、xdebug.start_with_request=yes 是否配置正确,更不会显示 ide Key、远程主机、端口等连接参数。

怎么看 Xdebug 是否真正启用调试能力

光靠 phpinfo() 不够,得查运行时实际行为。推荐组合验证:

  • 执行 php -v:终端输出中若含 with Xdebug v3.x.x,说明 CLI 模式下扩展已加载
  • 访问 phpinfo() 页面,搜索 Xdebug,确认有完整配置区块(含 xdebug.modexdebug.client_host 等字段)
  • 写一行触发断点的代码:
    ini_set('xdebug.mode', 'debug');
    die(xdebug_info());

    —— xdebug_info() 是 Xdebug 3.1+ 提供的函数,会直接输出当前调试上下文,包括是否监听、客户端地址、触发方式等

  • 在 PHP 脚本开头加 xdebug_break() 并用 IDE 连接,看是否真能停住;不能停,大概率是 xdebug.mode 没设对,或网络/防火墙阻断了 xdebug.client_port(默认 9003)

常见配置错误导致 phpinfo 看得到但调试不工作

phpinfo() 显示 Xdebug 区块,但断点不触发,八成是以下配置没对上:

  • xdebug.mode 值必须包含 debug(如 debug,develop),仅 offdevelop 不会启动调试器
  • xdebug.client_hostdocker 或远程开发时容易填错:本地开发填 localhost,Docker 容器内要填宿主机 IP(如 host.docker.internal 或真实 IP),不能填 127.0.0.1
  • xdebug.start_with_request 默认是 default(即不自动启动),设为 yestrigger 才可能进断点;若设 trigger,还得在 URL 加 ?XDEBUG_session_START=phpstorm
  • PHP-FPM 和 CLI 的 php.ini 是两套配置,phpinfo() 显示的是 Web SAPI(如 FPM)的配置,而 php -v 看的是 CLI 的——改错文件就白忙

快速确认 Xdebug 当前状态的命令行法

不用开网页,终端一条命令就能看清关键项:

立即学习PHP免费学习笔记(深入)”;

php -i | grep -E "(xdebug.mode|xdebug.client_|xdebug.start_with_request|xdebug.idekey)"

如果什么都没输出,说明 Xdebug 根本没加载(检查 extension=xdebug.so 是否在正确的 php.ini 里,且路径无误);如果输出了但 xdebug.modeoff 或不含 debug,那就只是「挂着没干活」。

最常被忽略的是:Xdebug 4 已移除 xdebug.remote_* 系列旧参数,所有配置都必须用新命名(xdebug.client_*),但很多人复制的教程还是 Xdebug 2 的写法,phpinfo 里看着像配对了,其实全被忽略。

text=ZqhQzanResources