sublime text 3 调试 php 必须用 debugger 插件配合 xdebug 3.x,需确保 xdebug.mode=debug、端口9003开放、pathmappings正确、浏览器启用xdebug helper且带调试参数,sublime须从终端启动以加载正确php.ini。

Sublime Text 3 本身不支持原生 PHP 调试,必须靠插件 + 外部 Xdebug 扩展协同工作;当前最可行的方案是用 Debugger 插件(DAP 协议),SublimeXdebug 已基本淘汰,对 Xdebug 3.x 支持极差,容易断点失效、变量为空。
确认 Xdebug 已加载且监听正确端口
Sublime 只是“被动接收方”,Xdebug 必须主动连进来。如果 phpinfo() 页面里没看到 Xdebug 模块,或 php -m | grep xdebug 无输出,后续所有配置都无效。
- Xdebug 3.x 必须设
xdebug.mode=debug,旧配置如xdebug.remote_enable=1会被忽略 -
xdebug.client_port默认是9003(不是9000),改了就得同步改插件配置 - Windows 用户务必检查防火墙是否放行
9003端口;macOS/Linux 可用telnet 127.0.0.1 9003测试端口是否可被 PHP 进程访问 - 加一行
xdebug.log="/tmp/xdebug.log"(路径需有写权限),出问题时直接看日志比猜快得多
用 Debugger 插件替代 SublimeXdebug
SublimeXdebug 自 2022 年起停止维护,不支持 super_globals、pathMappings 多映射、异步请求,且无法识别 $_SERVER 等关键变量。截至 2026 年,Debugger 是唯一稳定支持 Xdebug 3.x 和 PHP 8.2+ 的方案。
- 通过 Package Control 安装
Debugger(不是SublimeXdebug) - 菜单栏 →
Tools→Debugger→Open Launch Configurations,选PHP模板生成基础配置 - 关键字段必须填对:
"pathMappings"左侧是 PHP 实际运行路径(如/var/www/html/或 Docker 容器内路径),右侧是 Sublime 项目根目录(可用${folder}) - 保存后状态栏右下角应显示
Debugger: PHP,没出现说明配置未加载
浏览器触发调试会话的三个硬性条件
Debugger 不会主动发起连接,必须由一次带调试标识的 HTTP 请求“唤醒”Xdebug,再由它反向连回 Sublime。缺一不可。
- PHP 文件开头必须有
<?php,否则 Xdebug 直接跳过整个文件,Sublime 静默无反应 - 浏览器必须安装 Xdebug Helper(Chrome/Firefox 均可),IDE key 设为
sublime.xdebug,并手动点击虫子图标启用(仅安装不启用 = 无效) - 访问 URL 必须带
?XDEBUG_SESSION_START=sublime.xdebug参数,或依赖插件自动注入;只打开index.php不加参数 = 不触发 - 断点必须是红色实心圆点(灰色 = 未识别),点击行号左侧空白处设置;断点在
if、for等控制结构第一行常不生效,建议设在内部语句上
常见静默失败:Sublime 启动时没读到你的环境
配置全对、断点也红了,但就是不停 —— 最大概率是 Sublime 启动方式绕过了 shell PATH,导致它调用的 php 不是你以为的那个,也没加载你改的 php.ini。
- macOS/Linux:不要从 Dock 或 Spotlight 启动 Sublime,改用终端命令
subl启动(确保subl命令已配置) - Windows:右键开始菜单 → “以管理员身份运行” Sublime,避免权限导致读不到
php.ini - 验证方法:在 Sublime 控制台(
Ctrl+`)中执行import subprocess; subprocess.run(['php', '--ini']),看输出的配置路径是否和你修改的一致
path_mapping 错一位、xdebug.mode 没设对、浏览器插件没点绿、Sublime 不是从终端启动——这四点覆盖了 90% 的“配置完却不动”问题。别跳步骤,挨个核对。











