Xdebug在Windows上安装失败主因是版本不匹配或配置错误:必须严格匹配PHP版本、TS/NTS类型、VC编译器版本,且zend_extension需用绝对路径写入php.ini的[XDebug]段内,禁用其他Zend扩展。
Xdebug 在 Windows 上装不上,90% 是因为版本不匹配或配置写错位置 —— 不是 PHP 版本、TS/NTS 类型、VC 编译器版本三者全对,就是路径没写对或被其他扩展干扰。
怎么看自己该下哪个 Xdebug DLL 文件
打开浏览器访问
(内容为
),重点确认三项:
:比如
:显示
就是 TS,
就是 NTS
:通常是
(对应 VC17)、
(对应 VC15)等;Xdebug 官网下载页用的是
、
这种缩写
别信“PHP 8.x 通用版”这种说法。例如 PHP 8.1 NTS + MSVC19,就得下
—— 名字里每个字段都得严丝合缝。用官网的
Analysis Wizard
最稳妥,但粘贴的
输出必须完整,尤其不能缺
和
行。
php.ini 里怎么写 zend_extension 才生效
Windows 下必须用
,不能用
;路径必须是绝对路径,且反斜杠要双写或改用正斜杠:
常见错误:
ClawUsage Windows Hardlock
通过聊天(Telegram / 飞书)执行本地 `clawusage` 监控命令。当用户输入 `/clawusage ...`,或提出“查看 Codex 用量”、“开启/关闭自动…”等请求时触发使用。
下载
写成
→
里根本不会出现 Xdebug 模块
路径里单反斜杠
→ PHP 解析失败,启动时静默忽略
放在
段落外 → 配置不加载(虽然部分旧版容忍,但 Xdebug 3+ 强烈建议放段内)
前面有
加载了 Zend OPcache 或 Zend Guard Loader → 必须注释掉它们,Xdebug 和这些 Zend 扩展不能共存
Xdebug 3 的关键配置项和默认行为变化
Xdebug 3 和 2 的配置差异极大,Windows 用户最容易栽在远程调试端口和启用逻辑上:
必须显式设置,比如
(开启调试+开发辅助),不能只写
(这个在 3.x 已废弃)
替代了
,值一般为
默认是
,不是旧版的
;PhpStorm 默认监听 9003,若改了端口,两边必须同步
控制是否自动启动调试:设为
就不用加
参数;设为
则需配合浏览器插件或手动传参
强烈建议开启,比如
,出问题时第一手线索就在这里
验证是否真装好了,别只看 phpinfo()
里看到 Xdebug 模块不等于能用。真正有效的验证方式只有两个:
命令行执行
,输出里带
字样(说明
加载无误)
在 PHP 脚本里加
函数调用(Xdebug 3.1+ 新增),它会输出当前所有生效配置、连接状态、日志路径等 —— 这比翻
页面快得多,也更准
如果
报
,说明扩展根本没加载成功,回头检查
路径和 TS/NTS 是否匹配;如果函数能执行但显示
,那就是配置漏了
。
zend_extensionphpinfo.phpPHP Version8.1.23Thread SafetyenableddisabledCompilerMSVC19MSVC17vc15vc17php_xdebug-3.3.2-8.1-vc17-nts-x86_64.dllphpinfo()Loaded Configuration Fileextension_dirzend_extensionextensionzend_extension="C:\php\ext\php_xdebug-3.3.2-8.1-vc17-nts-x86_64.dll"
// 或
zend_extension="C:/php/ext/php_xdebug-3.3.2-8.1-vc17-nts-x86_64.dll"extension=php_xdebug...phpinfo()C:phpext...[XDebug]zend_extensionxdebug.modexdebug.mode=debug,developxdebug.remote_enable=1xdebug.client_hostxdebug.remote_host127.0.0.1xdebug.client_port90039000xdebug.start_with_requestyes?XDEBUG_SESSION_START=1triggerxdebug.logxdebug.log="C:/tmp/xdebug.log"phpinfo()php -vwith Xdebug v3.x.xphp.inixdebug_info()phpinfo()xdebug_info()Call to undefined function xdebug_info()zend_extensionclient_host: not setxdebug.client_host