Xdebug未在php -v中显示说明扩展根本未加载,需确认php.ini路径、zend_extension配置正确且文件存在,重启对应SAPI服务,并设置xdebug.mode=debug启用调试。
php
-v 不显示 Xdebug,说明根本没加载扩展
这是最常卡住的第一步。VSCode 装得再全,
输出里没
,后面所有调试都是空谈。
常见错误现象:
有 PHP 版本但无 Xdebug 字样;
显示加载了 php.ini,但里面
行被注释、路径写错、或指向不存在的
(Windows)或
(macOS/Linux)。
用
确认实际生效的配置文件路径,别只改桌面副本
Windows 下检查
前不能有分号,且文件真在
目录下
macOS/Linux 下路径通常是
,用
找真实位置
改完 php.ini 后,CLI 和 Web 服务要分别重启:CLI 无需操作,Web 服务如 Apache 要
,PHP-FPM 要
xdebug.mode=debug 是 Xdebug 3 的开关,不是 remote_enable
Xdebug 3 彻底废弃了
系列参数。如果 php.ini 里还留着
,它不会报错,但也不会起作用——调试连接直接静默失败。
必须显式启用调试模式,并配对客户端地址:
立即学习
“
PHP免费学习笔记(深入)
”;
是强制前提,缺它
再准也连不上
不能无脑填
:Docker 容器内 PHP 要填宿主机 IP(如
),WSL2 下同理;浏览器访问时若走 nginx 反代,也要确认 client_host 能路由到 VSCode 所在机器
是 Xdebug 3 默认端口,VSCode
中的
必须严格一致,不是旧版的
可省去每次 URL 加
,开发期建议打开
launch.json 的 type=php + request=attach 是 Web 调试唯一可行路径
很多人误用
去调试 Web 请求,结果断点永远不命中——因为
是 VSCode 自己拉起一个 PHP CLI 进程,跟 Apache/Nginx 完全无关。
PHP 8.5.5
PHP 8.5.5 是 PHP 8.5 分支的维护更新版本。该版本延续了“小步快跑”的迭代逻辑,通过深度错误修复、底层性能微调以及安全加固,旨在为开发者提供一个更健壮、更高效的运行环境。该版本严格遵守语义化版本规范,不包含破坏性变更。
下载
Web 场景必须用
,且依赖 PHP 进程已主动向 VSCode 发起连接:
和
缺一不可
必须和 php.ini 中
完全一致
是硬伤高发区:比如 PHP 进程里文件路径是
,而你本地项目在
,就必须写
,少一个斜杠或路径层级错位,VSCode 就找不到源码文件
容器场景中,
左侧必须是容器内路径(
),右侧是本地路径(
),顺序反了会“断点灰掉”
VSCode 底部状态栏不显示 “Xdebug is running” 就别点 F5
这个提示不是装饰——它是 PHP Debug 插件真正监听到 9003 端口的唯一视觉证据。没它,说明 VSCode 根本没启动调试服务,F5 只是空转。
常见干扰项:
插件装错:只认
Felix Becker
发布的
,其他名字近似的大概率失效
插件未激活:重装后需手动重启 VSCode,或按
输入
端口被占:运行
(macOS/Linux)或
(Windows)查冲突进程,杀掉或换端口
防火墙拦截:特别是 Windows Defender 或公司级防火墙,可能静默丢弃入站连接,临时关闭测试
真正跑通时,你会看到 VSCode 底部状态栏出现 “Xdebug is running”,浏览器访问触发后,断点立刻红实心,变量面板自动展开当前作用域——这时候才开始查逻辑错,而不是配环境。
php -vwith Xdebug v3.x.xphp -vphp --inizend_extensionphp_xdebug.dllxdebug.sophp --inizend_extension=php_xdebug.dllext/zend_extension=/usr/lib/php/extensions/no-debug-non-zts-20230831/xdebug.sofind /usr -name "xdebug.so" 2>/dev/nullsudo apachectl restartsudo systemctl restart php-fpmxdebug.remote_*xdebug.remote_enable=1xdebug.mode=debuglaunch.jsonxdebug.client_host127.0.0.110.0.0.1xdebug.client_port=9003launch.jsonport9000xdebug.start_with_request=yes?XDEBUG_SESSION_START=1request: launchlaunchrequest: attach"type": "php""request": "attach""port": 9003xdebug.client_port"pathMappings"/var/www/html/index.php/Users/me/project"pathMappings": { "/var/www/html/": "${workspaceFolder}/" }pathMappings/var/www/html/${workspaceFolder}/PHP DebugCtrl+Shift+PDeveloper: Reload Windowlsof -i :9003netstat -ano | findstr :9003