xdebug 3.x 不再支持 remote_* 参数,必须全部删除并替换为 xdebug.mode=debug、xdebug.client_host、xdebug.client_port 等新参数,否则 php 启动报错且调试失效。

Xdebug 3.x 不再识别任何带 remote_ 前缀的旧参数,比如 xdebug.remote_enable、xdebug.remote_host、xdebug.remote_port 等。只要 php.ini 里还留着它们,PHP 启动时就会直接报 Invalid configuration directive 错误,导致 PHP-FPM 无法启动(宝塔面板显示“PHP-80 已停止”),php -v 也会中断输出。
确认并删除所有 remote_* 参数
打开你实际生效的 php.ini 文件(不是系统默认路径,而是 PHP 运行时加载的那个):
- 先查清路径:
php --ini和php -i | grep "Loaded Configuration File"必须一致 - 用文本编辑器打开该文件,在其中搜索
remote_ - 逐行删除所有含
remote_的配置项(包括注释掉的也建议删干净,避免干扰) - 特别注意:不要只改错别字或加个分号注释,必须整行移除
替换为 Xdebug 3.x 正确参数体系
remote_* 删除后,必须补上对应的新参数,否则调试仍不工作:
-
xdebug.mode=debug—— 必填,没有它断点完全不触发 -
xdebug.client_host=127.0.0.1(本地开发)或真实 IDE 所在机器 IP(远程调试) -
xdebug.client_port=9003—— 默认端口,VSCode/PhpStorm 需同步监听此端口 -
xdebug.start_with_request=trigger—— 推荐设为 trigger,通过 URL 参数?XDEBUG_SESSION_START=1按需启用
验证是否清理彻底
改完配置后务必重启 PHP-FPM(宝塔里点“重载配置”或执行 systemctl restart php-fpm-80),再运行:
-
php -v—— 不报错且末尾显示 Xdebug v3.x 即基础通过 -
php -m | grep xdebug—— 应有输出,说明扩展已加载 -
php -i | grep xdebug.mode—— 显示值为debug或debug,profile等合法组合 - 若仍有
Invalid configuration directive提示,说明某处漏删了 remote_*,需重新全局搜索
额外提醒:不同 PHP 实例配置独立
宝塔中 PHP-7.4、PHP-8.0、CLI 环境各自使用不同的 php.ini,修改前务必确认目标版本:
- Web 请求走的是宝塔管理的 PHP-FPM 实例(如
/www/server/php/80/etc/php.ini) - 命令行脚本用的是 CLI 版本(
php --ini显示路径),常被忽略 - 哪怕 Web 调试通了,CLI 下跑测试仍可能因没配
xdebug.mode=debug而静默失败











