You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PhpStorm通过SSH隧道配置XDebug调试问题咨询

排查XDebug无法调试的常见问题(基于你的配置)

从你提供的phpinfo信息和现有配置来看,核心的XDebug远程调试参数缺失,加上隧道和IDE配置可能存在需要验证的点,以下是一步步的排查和修复方案:

1. 补全XDebug核心远程调试配置

你的phpinfo输出里没有显示xdebug.remote_enable、xdebug.remote_host、xdebug.remote_port这些关键参数——而XDebug 2.x(你用的是2.6.0版本)必须配置这些才能发起调试连接。

登录到Ubuntu服务器,找到PHP的XDebug配置文件(通常路径是/etc/php/7.x/mods-available/xdebug.ini,具体路径根据你的PHP版本调整),添加或修改以下内容:

xdebug.remote_enable = 1
xdebug.remote_host = 127.0.0.1
xdebug.remote_port = 9000
xdebug.remote_autostart = 1
xdebug.idekey = XDEBUG_ECLIPSE
  • xdebug.remote_enable=1:强制开启远程调试功能
  • xdebug.remote_host=127.0.0.1:因为你用了SSH远程端口转发R9000 localhost:9000,服务器上的XDebug需要连接到本地回环的9000端口,这个请求会通过SSH隧道转发到你本地PhpStorm的监听端口
  • xdebug.remote_autostart=1:自动启动调试会话,不需要手动通过浏览器书签触发(可选,但能大幅简化调试流程)
  • xdebug.idekey:和你phpinfo里的XDEBUG_ECLIPSE保持一致,确保PhpStorm的IDE Key配置和这个值匹配

修改完成后,重启PHP服务生效:

# 以PHP7.0-FPM为例,根据你的实际版本调整
sudo service php7.0-fpm restart
# 如果是Apache部署,还要重启Apache
sudo service apache2 restart

2. 验证SSH隧道的正确性

你设置的远程端口转发R9000 localhost:9000逻辑是对的——在远程服务器上监听9000端口,当有请求连接时,通过SSH隧道转发到你本地机器的localhost:9000端口,但需要做两个验证:

  • 服务器端:执行netstat -tulpn | grep 9000,确认有sshd进程在监听9000端口
  • 本地端:打开PhpStorm的调试监听(右上角的电话图标变绿即为开启),然后执行lsof -i :9000(Mac/Linux)或netstat -ano | findstr 9000(Windows),确认PhpStorm在占用9000端口

如果本地9000端口被其他程序占用,可以修改PhpStorm的调试端口(路径:设置→Build, Execution, Deployment→Debugger→XDebug→Debug port),同时对应修改SSH隧道的转发端口和XDebug的remote_port参数。

3. 确认PhpStorm的调试配置

  • 确保调试监听已开启:点击右上角的电话图标,状态为绿色才是正常监听
  • 服务器配置匹配:在Settings→Build, Execution, Deployment→Servers中,你的远程服务器配置的Debugger选项卡要选择XDebug,且Port设置为9000(和隧道、XDebug配置一致)
  • IDE Key一致:在Settings→Languages & Frameworks→PHP→Debug→XDebug里,IDE key设置为XDEBUG_ECLIPSE,和XDebug配置完全匹配

4. 检查防火墙和网络限制

  • 本地机器:确认Windows防火墙、第三方安全软件没有拦截9000端口的入站连接
  • 远程服务器:执行ufw status查看防火墙状态,确保允许本地回环的9000端口连接(通常默认允许,但如果有自定义规则需要检查)

5. 测试调试连接&排查日志

配置完成后,按以下步骤测试:

  1. 在PhpStorm的项目入口文件(比如index.php)第一行设置断点
  2. 通过配置了动态代理(本地1024端口)的浏览器访问项目
  3. 如果开启了xdebug.remote_autostart=1,此时应该自动触发调试会话;如果没开,需要在浏览器地址栏添加?XDEBUG_SESSION_START=XDEBUG_ECLIPSE参数触发

如果还是失败,可以开启XDebug日志排查:在xdebug.ini中添加

xdebug.remote_log = /var/log/xdebug.log

重启服务后再次触发调试,查看/var/log/xdebug.log,里面会记录XDebug尝试连接的地址、端口以及错误信息,能精准定位问题。


内容的提问来源于stack exchange,提问作者fabio.ivona

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:57:07