「这段代码走到这了吗?」「这个变量现在到底是什么值?」
排查这类问题,很多人的第一反应是在代码里插入 var_dump($xxx); die;。一次两次还好,多了就变成噩梦:改完代码要刷新、看完要删、删漏了还会把调试信息带到线上。
断点调试能彻底改变这种体验:代码停在你想停的位置,变量值实时可看,还能一步步往下走。这篇文章手把手教你在 VS Code 里给 PHP 配上 Xdebug。
一、断点调试到底能干什么
在编辑器里点一下行号,这行代码就变成了「断点」。程序运行到这一行时停下来,你可以:
- 查看当前所有变量的值;
- 单步执行,一行一行看逻辑怎么走;
- 随时改查调用栈,知道是从哪调进来的;
- 不污染代码,调试完删掉断点就行。
对排查复杂 bug 来说,效率远超 var_dump。
二、Xdebug 是怎么工作的
Xdebug 是 PHP 的调试扩展。原理很简单:
- PHP 进程加载 xdebug 扩展;
- 运行时按配置连接调试客户端(这里是 VS Code);
- 遇到断点就暂停,把变量、堆栈信息发给 VS Code。
它需要几项关键配置(Xdebug 3 的默认值):
zend_extension=xdebug
xdebug.mode=debug
xdebug.start_with_request=yes
xdebug.client_port=9003
其中 client_port 默认是 9003,VS Code 这边监听同一个端口就能接上头。
三、在 Xserver 里一键开启 Xdebug
手动编译 xdebug 是最劝退的环节:要匹配 PHP 版本、处理 phpize、头文件路径,错一步就白忙。Xserver 把这一步简化成了开关:
- 打开「PHP」菜单,选择你的 PHP 版本。
- 点击「扩展」入口,打开扩展列表。
- 找到 xdebug,把它「开启」。
- 回到 PHP 列表,点「重启」,让扩展生效。
重启后,可以点「phpinfo」确认 xdebug 已经加载,或者在终端执行:
php -m | grep xdebug
能看到 xdebug,说明扩展就绪。Xserver 内置的 PHP 版本都预置了 xdebug 支持,不用自己编译。
四、VS Code 这边怎么配
先安装 PHP 调试插件:
- 打开 VS Code,进入扩展市场。
- 搜索「PHP Debug」(作者 xdebug),安装。
然后在项目根目录建一个调试配置。打开「运行和调试」面板,点「创建 launch.json」,选 PHP,得到类似这样的配置:
{
"version": "0.2.0",
"configurations": [
{
"name": "Listen for Xdebug",
"type": "php",
"request": "launch",
"port": 9003
}
]
}
关键就是 port: 9003,要和 php.ini 里的 xdebug.client_port 一致。
五、开始第一次断点调试
- 在 VS Code 里打开你的 PHP 文件,点行号打一个断点。
- 按 F5,启动「Listen for Xdebug」,底部状态栏出现监听中的提示。
- 在浏览器里访问对应站点,比如
http://my-blog.test。 - 代码执行到断点处自动停住,左侧面板能看到变量、调用栈,上方出现单步按钮(F10 单步跳过、F11 步入、Shift+F11 步出)。
这就是调试的完整循环:打断点 → 访问页面 → 看变量 → 单步走 → 定位问题。
常见问题
1. 访问页面没进断点
按顺序排查:
- VS Code 是否在监听(F5 启动,端口 9003);
- php.ini 里
xdebug.mode=debug是否设置,xdebug.start_with_request=yes是否开启; - 改完配置有没有重启 PHP;
- Xdebug 2 和 3 的端口不同:老版本默认 9000,新版默认 9003,两边要一致。
2. 终端里跑脚本不进断点
Web 请求走 nginx + php-fpm,命令行脚本走 CLI SAPI,两者可能加载不同的 php.ini。确认 CLI 用的 PHP 版本和配置文件里也有 xdebug 配置。
3. xdebug 显示已开启,但 php -m 里没有
多半是改完配置没重启,或者重启的是另一个版本。去 Xserver 的 PHP 列表确认目标版本的扩展开关和重启操作都执行了。
4. 端口被占用
9003 被其他程序占用时,换一个端口,同时改 php.ini 的 xdebug.client_port 和 launch.json 的 port,保持一致。
最后
断点调试上手后,你会发现自己再也不想回到 var_dump 时代。配合 Xserver 里的一键扩展管理,整个配置过程不超过 5 分钟。
遇到问题欢迎在评论区留言,也可以到 Xserver 官网反馈 bug 和建议。下载地址:https://x-server.ltd。
