xdebug调试需满足连接链路、信号触发、路径映射、协议端口四者对齐;var_dump输出受缓冲、html解析、逻辑覆盖影响,需配合exit、、ob_flush等解决;xdebug 3仅保留xdebug.mode=debug、xdebug.start_with_request=trigger、xdebug.client_host等关键配置,废弃remote_前缀参数。

Xdebug 调试不是“装完就能断点”,它卡在连接链路上——PHP 进程必须主动连上 IDE 监听端口,且触发信号、路径映射、协议端口三者全对齐,缺一不可。
var_dump 为什么有时不输出?
它不是消失,是被缓冲吃掉、被 HTML 解析乱码、或被后续逻辑覆盖。尤其在循环里直接 var_dump($data),你可能只看到最后一次输出,甚至什么都没看到。
- 加
exit或die紧跟在var_dump()后面,防止流程继续干扰 - HTML 环境下包一层
<pre class="brush:php;toolbar:false;"></pre>:<?php var_dump($data); ?>
- CLI 下输出被截断?先用
count($arr)或gettype($obj)探路,别一上来就 dump 整个 Doctrine Entity - 配合
ob_flush(); flush();强制刷出 PHP 输出缓冲,绕过 Nginx/Apache 的缓冲层
Xdebug 3 配置只留这三行才生效
所有带 remote_ 前缀的配置(比如 xdebug.remote_host)在 Xdebug 3 中已废弃,保留就会报 Unknown configuration setting 错误,直接导致扩展加载失败。
-
xdebug.mode=debug:必须是debug,不是develop或profile -
xdebug.start_with_request=trigger:设为trigger更安全;yes会每次请求都连,容易干扰队列脚本或健康检查接口 -
xdebug.client_host=127.0.0.1(本地)或host.docker.internal(Docker 容器内访问宿主机)——别写localhost,Mac M1/M2 或某些容器环境解析失败 - 顺手加上
xdebug.client_port=9003,IDE 的 Debug port 必须和它完全一致;xdebug.log=/tmp/xdebug.log也建议配上,出问题第一眼就看它
浏览器访问不触发断点?缺的是那个参数
Xdebug 3 默认不自动连,XDEBUG_SESSION_START=PHPSTORM 不是可选项,是开关。没它,xdebug.start_with_request=trigger 就是摆设。
- 手动拼 URL 最快:
http://localhost/test.php?XDEBUG_SESSION_START=PHPSTORM(IDE key 必须匹配,PhpStorm 默认是PHPSTORM,VS Code 是VSCODE) - 装官方 Xdebug Helper 插件,点虫子图标一键激活,自动管理 cookie
- 如果用了 Nginx 反向代理,确认
proxy_pass指令后带了$args,否则 query string 会被过滤掉 - Docker 环境下,
xdebug.client_host设错会导致 PHP 容器连自己,断点永远灰着
CLI 脚本怎么进断点?不能靠浏览器传参
命令行没有 URL 参数,?XDEBUG_SESSION_START 失效。必须靠环境变量显式开启调试通道。
- 运行时加
XDEBUG_MODE=debug:例如XDEBUG_MODE=debug php artisan queue:work - 如果 IDE 没捕获,补上
XDEBUG_SESSION_START=PHPSTORM:例如XDEBUG_MODE=debug XDEBUG_SESSION_START=PHPSTORM php script.php - 确保 IDE 已开启 “Listen for PHP Debug Connections”(PhpStorm 右上角电话图标变绿,VS Code 要在 Run 视图中点击 ▶ 启动调试配置)
- 某些容器环境(如 WSL2 或远程 Docker),
xdebug.client_host应设为宿主机真实 IP(如10.0.2.2),而非127.0.0.1
最常被忽略的其实是路径映射——IDE 里看到的文件路径和 PHP 进程里 __FILE__ 返回的绝对路径必须一字不差,差一个符号(比如末尾斜杠、大小写、软链接)都会让断点失效。调试前先在代码里加一行 var_dump(__FILE__);,对着 IDE 的 pathMappings 逐字核对。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











