跳转到主内容
趣航编程网 - 趣学编程,启航技术之路!

VSCode配置PHPDebug 后端找错必备VSCode安装Xdebug教程

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

相关文章