sublime text 调试 php 必须同时配置 xdebug client 插件与 php.ini(xdebug.mode=debug、client_port=9003、pathmappings 严格映射),任一缺失或端口/路径/ide key 不一致,断点即失效。

Sublime Text 调试 PHP 必须用 Xdebug Client 插件 + 正确的 php.ini 配置,缺一不可;光装插件或光配 PHP,断点都不会停。
断点不触发?先核对 xdebug.remote_port 和插件 port 是否一致
常见错误是:PHP 的 xdebug.remote_port=9000,但 Sublime 项目配置里写的是 "port": 9001,结果监听端口错位,请求发过去没人接。Xdebug 2.x 默认用 9000,3.x 改为 9003,但插件默认仍读 9000 —— 所以必须手动对齐。
- 查 PHP 实际端口:
php --ri xdebug | grep "remote_port"或看phpinfo()输出 - 查插件端口:打开项目
.sublime-project文件,确认"port"值与上一步完全一致 - Windows 下若提示“端口被占用”,别硬改,先用
netstat -ano | findstr :9000查 PID,再用任务管理器结束对应进程
path_mapping 是远程调试唯一生效的关键字段
本地调试时可留空,但只要涉及虚拟机、Docker、宝塔远程服务器或 WSL,path_mapping 就必须精确映射——不是“大概路径相似”,而是“远程绝对路径 → 本地绝对路径”一一对应,一个斜杠都不能错。
- 例如远程路径是
/var/www/html/index.php,本地存于D:\projects\myapp\index.php,则必须写:"\/var\/www\/html\/": "D:/projects/myapp/" - Windows 路径分隔符统一用正斜杠
/,反斜杠\会被 JSON 解析失败 - 路径末尾的斜杠不能省略,否则文件定位失败,断点显示为灰色(未激活)
浏览器触发调试靠 XDEBUG_SESSION_START,不是单纯刷新页面
很多人点了 “Start Debugging (Launch Browser)” 后直接刷新页面,结果没反应——因为 Xdebug 不是“监听所有请求”,而是只响应带特定 GET 参数或 cookie 的请求。
- 最稳方式:在浏览器地址栏手动追加
?XDEBUG_SESSION_START=sublime.xdebug(注意 IDE Key 必须和php.ini中xdebug.idekey一致) - 替代方案:装 Chrome 插件
Xdebug Helper,点击虫子图标设为绿色,并确保 IDE Key 填sublime.xdebug - 如果用 Nginx 或 Apache alias,
url配置项必须填真实可访问的 HTTP 地址,比如"http://localhost:8000/api/user.php",不能填file:///或相对路径
变量展开不全?改 sublime-project 里的 super_globals 和深度限制
默认情况下,$_POST、$_SERVER 这类超全局变量只显示一层,数组嵌套深了就看到 […],没法继续点开。
- 在项目配置中显式开启:
"super_globals": true - 加深度控制(避免卡死):
"max_children": 32, "max_data": 1024, "max_depth": 5 - 这些参数要写在
"xdebug"对象下,不是顶级字段;写错位置会被忽略
真正卡住的往往不是“怎么设断点”,而是路径映射少了一个斜杠、端口差了 1 位、IDE Key 大小写不一致——这些细节不验证,调试永远停不下来。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











