xdebug.mode=debug必须显式启用,否则phpstorm收不到调试请求;还需确保client_host、client_port、start_with_request配置正确,路径映射精准,且服务器出站防火墙放行至本地ide端口。

xdebug.mode=debug 必须显式启用,否则 PhpStorm 完全收不到调试请求——这是宝塔环境下 90% 配置失败的根源。
确认 Xdebug 已加载且版本匹配
宝塔面板里勾选安装 Xdebug 不等于真正可用。PHP 版本(如 8.1)、编译架构(zts/non-zts)、线程安全(TS/NTS)三者必须与 xdebug.so 文件完全一致,否则 php -v 或 php --ri xdebug 会直接报错或静默不加载。
- 登录宝塔 → 【软件商店】→ 找到对应 PHP 版本 → 【设置】→ 【安装扩展】→ 确认 Xdebug 显示“已安装”
- SSH 进入服务器,执行
php --ri xdebug;若提示“Extension 'xdebug' not present”,说明没加载成功,需检查zend_extension路径是否写错或文件不存在 - 若输出中有
Xdebug Version => 3.3.3,但xdebug.mode显示为off,说明配置未生效,不是扩展问题,是 php.ini 写法或位置错了
php.ini 中必须写的四行核心配置
Xdebug 3.x 和 2.x 参数名完全不同,宝塔默认 PHP 多为 7.4+,应统一用 Xdebug 3 风格。旧参数如 xdebug.remote_enable 在 3.x 中已失效,写了也白写。
-
xdebug.mode=debug—— 不是可选,是强制开关,缺了就彻底不进调试流程 -
xdebug.client_host=192.168.1.100—— 填你本地电脑的局域网 IP(不是127.0.0.1,除非 PhpStorm 和 PHP 同在一台机器),用ipconfig(Windows)或ifconfig(macOS/Linux)查 -
xdebug.client_port=9003—— PhpStorm 默认监听 9003;若改过端口,这里和 IDE 设置必须严格一致 -
xdebug.start_with_request=yes—— 避免手动加?XDEBUG_SESSION_START=1,不然每次访问都得带参数
其他如 xdebug.log、xdebug.idekey 可不设;但若设了 xdebug.idekey=PHPSTORM,浏览器插件或 URL 参数就必须匹配,否则被丢弃。
防火墙和云平台出站规则常被忽略
Xdebug 3 是「客户端模式」:PHP 进程主动从服务器发包连你本地电脑的 9003 端口。这意味着——
- 宝塔【安全】→【防火墙】里,【出站规则】必须放行目标 IP + 9003 端口(不是入站)
- 阿里云/腾讯云等,还要去 ECS 控制台的安全组里,添加「出方向」规则:协议 TCP、端口 9003、目标 IP 填你本地电脑的公网或内网 IP
- 本地电脑防火墙(如 Windows Defender)也要允许 PhpStorm 接收 9003 入站连接
如果 xdebug.log 里出现 Failed to connect to client,八成卡在这一步。
PhpStorm 中路径映射必须一对一
服务器上代码路径(如 /www/wwwroot/myapp/)和你本地项目根目录(如 /Users/me/project/myapp)必须通过「路径映射」对齐,否则断点根本不会命中。
- File → Settings → PHP → Servers → 点 + 添加服务器,Name 填任意(如
baota-local),Host 填你的网站域名或127.0.0.1,Port 填网站端口(如 80/443) - 勾选
Use path mappings,然后在下面表格里:左边填服务器绝对路径,右边填你本地对应路径,一个字符都不能差 - 别信「自动检测」——宝塔站点根目录常是
/www/wwwroot/xxx/,而你本地可能是~/code/xxx,手动填最稳
映射错一个斜杠,断点就永远灰掉。验证方式:在 PhpStorm 中打开任意 PHP 文件,右键 → Debug → 如果弹出 “Can't find the file on server”,就是映射没对上。
client_host、出站防火墙,这三项漏掉任一,调试就必然失败。php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











