Xdebug安装调试需先用xdebug.org/wizard分析phpinfo()源码确定版本,Windows IIS必须选VC15/VC9 TS版;php.ini中用zend_extension绝对路径加载,配置xdebug.mode=debug、xdebug.start_with_request=yes、xdebug.client_host=127.0.0.1、xdebug.client_port=9003,并重启IIS应用池验证。

确认PHP版本和线程安全模式再下载Xdebug
直接去 xdebug.org/wizard 粘贴 phpinfo() 的完整HTML源码,比手动查版本更可靠。Windows下IIS必须用VC9或VC15编译的TS(Thread Safe)版本,NTS版本在FastCGI下会加载失败但不报错——现象是 php -m 里看不到xdebug,phpinfo() 也没Xdebug区块。常见错误是下了VC6(Apache专用)或VC16(新版VS编译,部分旧IIS不兼容),结果反复重启IIS都无效。
IIS + FastCGI下php.ini的Xdebug配置要点
必须用 zend_extension(不是 extension),路径要带双引号且为绝对路径,例如:zend_extension="C:\php\ext\php_xdebug-3.3.1-8.2-vs16-x86_64.dll"。Xdebug 3+ 不再支持 xdebug.remote_enable 这类旧参数,正确写法是:
xdebug.mode=debug-
xdebug.start_with_request=yes(省去浏览器插件或URL加参) -
xdebug.client_host=127.0.0.1(别写localhost,某些hosts配置会导致解析失败) -
xdebug.client_port=9003(默认端口已从9000改为9003,VS Code/PhpStorm默认监听此端口)
旧配置如 xdebug.remote_handler=dbgp 或 xdebug.remote_autostart 在Xdebug 3中会被忽略,留着反而干扰判断。
重启IIS必须用管理器,不能只重启服务
IIS 7+ 的FastCGI进程池是独立管理的,仅重启 IIS Admin Service 或执行 iisreset 命令无法刷新PHP进程。必须打开 Internet Information Services (IIS) Manager → 左侧选服务器名 → 右侧“管理”栏点 重新启动,或者右键“应用程序池”→“全部回收”。验证是否生效:改完配置后访问 info.php,搜索页面是否有“xdebug”标题栏;命令行运行 php -v,输出里应含 with Xdebug v3.x.x。
立即学习“PHP免费学习笔记(深入)”;
断点不命中?检查IDE监听端口和FastCGI超时
常见现象:浏览器卡住、IDE无响应、Xdebug日志显示连接被拒绝。先确认IDE(如PhpStorm/VS Code)调试配置监听的端口和 xdebug.client_port 一致;再检查IIS的FastCGI设置:打开IIS管理器 → “FastCGI 设置” → 双击你的PHP路径 → 把 活动超时(秒) 和 空闲超时(秒) 改大(比如600),否则调试中途连接容易被IIS主动断开。日志路径可加一行:xdebug.log="C:\temp\xdebug.log",出问题时直接看它比猜快得多。



















