php debug是xdebug官方唯一推荐且持续维护的vscode调试器;需配置zend_extension、xdebug.mode=debug、xdebug.start_with_request=trigger、xdebug.client_host、xdebug.client_port=9003五项,且pathmappings必须左服务器右本地、端口严格一致。

PHP Debug 是唯一被 Xdebug 官方推荐、且当前(2026 年)仍持续维护的 VSCode 调试器。它不是“可选项”,而是事实标准 —— 其他名字相近的插件(如旧版 “PHP Debug” 或 “XDebug” 单独命名的扩展)已弃用或不兼容 Xdebug 3.x 协议。
php.ini 中必须写的五项 Xdebug 3 配置
Xdebug 3 彻底废弃了 xdebug.remote_* 系列参数,写进去不仅无效,还会导致 PHP 忽略调试逻辑,甚至启动失败。
-
zend_extension必须指向真实存在的 .so(macOS/Linux)或 .dll(Windows)文件,路径含空格需加英文双引号 -
xdebug.mode=debug是开关,不是on、1或develop -
xdebug.start_with_request=trigger比yes更安全:避免无意义请求连调试器,也防止被扫描器意外触发 -
xdebug.client_host=127.0.0.1本地开发没问题;Docker/WSL 用户得换成宿主机网关 IP(如10.0.2.2) -
xdebug.client_port=9003是硬性约定,Xdebug 3 默认端口,不是旧版9000
改完必须重启 PHP-FPM、Apache、Nginx 或 PHP 内置服务器;仅重启 VSCode 不生效。
launch.json 的 port 和 pathMappings 怎么对齐
VSCode 不报错,但断点变空心圆、变量显示 undefined,八成是这两处字面级不匹配。
-
"port": 9003必须和php.ini中的xdebug.client_port完全一致(数字、无引号、无空格) -
pathMappings左边是 PHP 进程看到的绝对路径,不是 URL 路径:- Apache 默认 DocumentRoot →
"/Library/WebServer/Documents/"(macOS)或"/var/www/html/"(Linux) - Docker 容器内 →
"/app/"或"/var/www/" - PHP 内置服务器(
php -S)→ 可省略pathMappings,或设为"/": "${workspaceFolder}/"
- Apache 默认 DocumentRoot →
- 右边统一用
"${workspaceFolder}/",结尾带斜杠更稳妥(POSIX 路径匹配敏感)
大小写、多余/缺失斜杠、中文路径、符号链接未展开 —— 都会导致映射失败。
断点不命中?先确认 CLI 加载的是哪个 php.ini
VSCode 调试走的是 PHP CLI 环境,不是浏览器访问时的 Web SAPI。很多人改了 Apache 的 php.ini,却忘了 CLI 用的是另一个文件。
- 终端执行
php --ini,看Loaded Configuration File那一行路径 —— 这才是你要编辑的文件 - 执行
php -v,输出里必须含with Xdebug v3.x - 执行
php --ri xdebug,检查Version行是否正常,且没有残留的xdebug.remote_*参数
如果 php --ri xdebug 报错或没输出,说明扩展根本没加载,后面所有配置都是白搭。
Xdebug 调试真正卡住的地方,从来不是插件装没装,而是 PHP CLI 的配置文件、Xdebug 版本与 PHP 主版本的二进制兼容性、以及 pathMappings 左右路径之间那一个斜杠或大小写的偏差。这些细节不手动验证,只靠“复制粘贴配置”永远停在空心断点上。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











