首页 游戏 软件 资讯 排行榜 专题
首页
编程语言
Ubuntu上PHPStorm如何进行远程调试

Ubuntu上PHPStorm如何进行远程调试

热心网友
89
转载
2026-04-26

Ubuntu上PHPStorm远程调试实操指南

Ubuntu上PHPStorm如何进行远程调试

免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈

一 场景与原理

远程调试的典型场景,莫过于在本地Ubuntu系统的PHPStorm里,去调试那些跑在另一台服务器、甚至是本机虚拟机或Docker容器里的PHP代码。这其中的核心原理,其实是一场“双向奔赴”:你得让远程PHP环境中的Xdebug扩展,能够顺利找到并连接到本地PHPStorm所监听的调试端口(默认是9003),然后双方通过DBGp协议进行通信。当然,如果远程服务器和你的开发机之间隔着网络防火墙,无法直接“喊话”,那就得请出SSH端口转发这个“传声筒”来打通通道了。

二 方案一 远程服务器可直连开发机时的配置

当网络环境允许远程服务器直接访问你的开发机时,配置起来最为直接。下面我们分两步走。

远程服务器安装 Xdebug(Ubuntu/Debian 示例)

首先,在远程服务器上把Xdebug安排上。对于Ubuntu或Debian系统,命令很直接:

sudo apt-get update && sudo apt-get install php-xdebug

安装完成后,关键的一步是配置。你需要编辑对应SAPI(比如FPM或Apache)的php.ini文件,例如/etc/php/8.1/fpm/php.ini/etc/php/8.1/apache2/php.ini,在文件末尾加入以下配置:

[xdebug]
zend_extension=xdebug.so
xdebug.mode=debug
xdebug.client_host=你的开发机IP(如 192.168.1.100)
xdebug.client_port=9003
xdebug.start_with_request=yes
xdebug.idekey=PHPSTORM

这里有几个细节需要注意:xdebug.client_host必须填你的开发机IP,idekey需要和后面PHPStorm里的设置对应上。配置保存后,别忘了重启相关的Web服务,比如:

sudo systemctl restart apache2sudo systemctl restart php8.1-fpm && sudo systemctl restart nginx

PHPStorm 设置

服务器端搞定后,轮到本地PHPStorm出场了。设置主要分三块:

1. 配置Servers:进入 File → Settings → Languages & Frameworks → PHP → Servers,点击“+”号新增一个服务器。这里需要填写远程服务器的真实Host和Port,Debugger选择Xdebug。如果本地项目路径和服务器上的部署路径不一致,务必在这里配置好Path mappings(路径映射),把本地的项目根目录和服务器上的项目根目录对应起来,这是后续断点能否生效的关键。

2. 确认调试端口:接着,在 File → Settings → Languages & Frameworks → PHP → Debug 里,确认Debug port是9003。

3. 创建远程调试配置:最后,打开 Run → Edit Configurations,点击“+”新建一个“PHP Remote Debug”。选择上一步配置好的Server,IDE key填写PHPSTORM,Debugger mode选择“Attach to remote host”。

开始调试

一切就绪,就可以开始实战了。先在PHPStorm里点击工具栏上那个“电话”图标(Start Listening for PHP Debug Connections),让IDE进入监听状态。然后,用浏览器访问你想要调试的远程URL。如果调试没有自动触发,可以在URL后面手动加上参数:?XDEBUG_SESSION_START=PHPSTORM。一旦请求命中了你在代码中设置的断点,PHPStorm就会立即捕获,接下来你就可以愉快地进行单步调试、查看变量、分析调用栈了。

三 方案二 远程服务器无法直连开发机时的 SSH 隧道

很多时候,生产环境或云服务器出于安全考虑,不允许外网直接连接内网的开发机。这时候,SSH隧道就成了我们的“秘密武器”。

它的核心思路很巧妙:既然远程Xdebug出不来,那我们就让它的9003端口,通过一条加密的SSH隧道,“绕道”连接到本地开发机的9003端口。对于Xdebug来说,它感觉就像是在连接本机的另一个服务,从而巧妙地避开了网络限制。

建立隧道(在本地开发机执行)

建立隧道需要在你的本地开发机上执行命令。最基础的命令格式如下:

ssh -R 9003:localhost:9003 user@远程服务器IP

这个-R参数,意思就是将远程服务器(Remote)的9003端口,转发到本地(localhost)的9003端口。

如果网络架构更复杂,比如远程主机需要通过一个跳板机才能访问,命令可以这样写:

ssh -J jumpuser@跳板机IP -R 9003:localhost:9003 user@目标服务器IP

连接成功后,这条隧道就建立起来了,只要SSH连接保持,隧道就会一直畅通。

远程服务器 Xdebug 配置

使用了隧道,远程服务器上的Xdebug配置就需要做一点小调整:

xdebug.client_host=127.0.0.1  # 因为隧道把端口转发到了本机回环地址
xdebug.client_port=9003

其他配置,如xdebug.mode=debugxdebug.idekey=PHPSTORM等,保持和方案一一致即可。配置好后同样需要重启Web服务。

PHPStorm 设置

PHPStorm这边的设置,和方案一完全一样。Servers里配置好远程主机信息(注意,这里填的还是远程服务器的真实地址),Path mappings映射好路径,创建PHP Remote Debug配置并启动监听。之后,访问远程URL触发调试的步骤也完全相同。

验证隧道

如果不确定隧道是否生效,可以在远程服务器上执行一个简单的测试:

telnet 127.0.0.1 9003

如果命令能连接上(通常显示一个空白光标或连接信息),就说明隧道建立成功,Xdebug的端口已经处于可连接状态了。

四 常见问题与排查

调试配置不成功是常有的事,别慌,按照下面这几个方向排查,大多能快速定位问题。

端口与连通性

首先,也是最基础的,确认“暗号”对上了没有:远程php.ini里的xdebug.client_port必须和PHPStorm设置里的Debug port保持一致(强烈建议都用默认的9003)。其次,检查网络通路:服务器本机的防火墙、云服务商的安全组规则,都需要放行9003端口的流量(如果用了方案二的隧道,则只需确保SSH端口22开放即可)。

IDE 无法捕获请求

PHPStorm已经亮起了监听图标,但访问页面就是进不了断点?可以从这几个点检查:

1. 路径映射(Path mappings):这是最容易出错的地方。务必在PHPStorm的Servers设置里,将本地项目的根目录精确映射到服务器上项目的根目录。一个字符的差别都会导致断点失效。

2. 调试触发方式:确保请求真正携带了调试信号。除了在URL后加?XDEBUG_SESSION_START=PHPSTORM,更优雅的方式是使用“Xdebug Helper”这类浏览器插件,一键开关调试。同时,确认PHPStorm的监听按钮是按下状态。

版本与配置项差异

这里有个大坑:Xdebug 3 和 Xdebug 2 的配置项名称完全不同。Xdebug 3 使用的是 xdebug.modexdebug.client_hostxdebug.client_port;而 Xdebug 2 则对应 xdebug.remote_enablexdebug.remote_hostxdebug.remote_port。如果你从网上找的教程是基于旧版本的,照搬到Xdebug 3上肯定会失效。务必先确认服务器上安装的Xdebug版本,再使用对应的配置项。

日志定位

当所有常规手段都无效时,打开Xdebug的日志是最强大的排查方法。在远程服务器的php.ini中增加一行:

xdebug.log=/tmp/xdebug.log

然后重现一次调试请求。之后去查看/tmp/xdebug.log这个文件,里面会详细记录Xdebug尝试连接的目标地址、端口、握手过程以及任何错误信息。根据日志输出,问题往往一目了然。

来源:https://www.yisu.com/ask/23510818.html
免责声明: 游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

相关攻略

Ubuntu环境下Node.js日志如何管理
编程语言
Ubuntu环境下Node.js日志如何管理

Ubuntu下Node js日志管理实践 一 核心原则与总体架构 想把Node js应用的日志管好,其实离不开几个核心原则。首先,结构化日志是基础。别再输出一堆难以解析的纯文本了,优先选择Winston、Pino、Bunyan这类成熟的日志库。它们不仅能帮你轻松控制日志级别(比如error、warn

热心网友
04.26
如何分析Ubuntu JS日志中的错误码
编程语言
如何分析Ubuntu JS日志中的错误码

Ubuntu 环境下 JS 日志错误码分析指南 一、先明确错误码来源 面对日志里冒出来的错误码,第一步不是埋头苦查,而是得先搞清楚它到底是从哪儿来的。不同的来源,分析路径截然不同。通常,在Ubuntu环境下进行JS开发或运维,遇到的错误码主要来自以下几个地方: Ja vaScript 运行时错误:比

热心网友
04.26
Ubuntu JS日志中常见的性能瓶颈
编程语言
Ubuntu JS日志中常见的性能瓶颈

Ubuntu环境下 JS 日志相关的性能瓶颈与排查要点 在Ubuntu上部署Node js应用,日志系统要是没打理好,分分钟就能从“服务助手”变成“性能杀手”。今天咱们就来盘一盘,那些藏在日志里的典型性能瓶颈,以及如何精准地揪出它们。 一 常见瓶颈概览 先来个全景扫描。日志引发的性能问题,通常逃不出

热心网友
04.26
Java日志在Ubuntu上如何监控
编程语言
Java日志在Ubuntu上如何监控

Ubuntu上监控Ja va日志的实用方案 面对Ubuntu服务器上运行的Ja va应用,如何高效地监控其日志,是每个运维和开发人员都会遇到的课题。下面这套从基础到进阶的实用方案,或许能给你带来清晰的思路。 一 快速上手 命令行与systemd 先说几个核心判断:对于绝大多数场景,最直接有效的排查工

热心网友
04.26
如何解析Ubuntu Java日志文件
编程语言
如何解析Ubuntu Java日志文件

Ubuntu Ja va日志解析与排查实操指南 一 定位日志来源与类型 排查问题的第一步,往往是找到对的日志。Ja va应用在Ubuntu系统上产生的日志,大致可以分为这么几类: 应用日志:这是最直接的线索,由Log4j、Logback或ja va util logging等框架生成。它们通常躺在

热心网友
04.26

最新APP

宝宝过生日
宝宝过生日
应用辅助 04-07
台球世界
台球世界
体育竞技 04-07
解绳子
解绳子
休闲益智 04-07
骑兵冲突
骑兵冲突
棋牌策略 04-07
三国真龙传
三国真龙传
角色扮演 04-07

热门推荐

红色沙漠星之塔怎么进入
游戏攻略
红色沙漠星之塔怎么进入

红色沙漠星之塔怎么进入 好消息是,星之塔的进入方式非常直接,它会在主线流程中自动解锁,你完全不需要提前满世界探索或者寻找隐藏入口。 当你跟随主线指引,到达星之塔所在的那片区域后,抬头就能看到它矗立在山顶。接下来要做的很简单:沿着图中这条醒目的红色路线所示的楼梯,一路向上攀登,就能直达山顶的星之塔正门

热心网友
04.26
王者荣耀姑射山王者荣耀世界观中的神秘仙山场景
游戏攻略
王者荣耀姑射山王者荣耀世界观中的神秘仙山场景

《王者荣耀世界》即将正式与玩家见面 备受期待的开放世界RPG手游《王者荣耀世界》,已经进入了上线前的最后阶段。官方释放的大量前瞻信息中,地图设计与剧情体验无疑是两大核心亮点。而作为游戏首赛季(S1)的重头戏,全新区域“姑射山”的登场,显然不仅仅是添一张新地图那么简单。它被深度植入了原创剧情,旨在为玩

热心网友
04.26
红色沙漠动力核心怎么获得
游戏攻略
红色沙漠动力核心怎么获得

红色沙漠动力核心怎么获得 想拿到动力核心,目标很明确:找到那些固定刷新的阿比斯守卫。它们常在一些特定地点徘徊,比如坍塌城门区域的悬崖边上,就是不错的狩猎场。 找到目标后先别急着动手,这里有个关键步骤能省下大量时间:在开打前,务必手动保存一下游戏。这相当于给自己买了一份“保险”,万一守卫没掉你想要的东

热心网友
04.26
王者荣耀世界元流之子王者荣耀元流之子射手技能解析与实战应用
游戏攻略
王者荣耀世界元流之子王者荣耀元流之子射手技能解析与实战应用

《王者荣耀世界》已正式官宣将于2026年4月上线 千呼万唤始出来,腾讯天美工作室的开放世界MMOARPG《王者荣耀世界》,终于敲定了2026年4月的上线日期。消息一出,玩家社区的讨论热度再次被点燃。在众多引人注目的首发角色里,“元流之子”以其鲜明的定位和独特的技能设计,成为焦点中的焦点。最近,不少玩

热心网友
04.26
王者荣耀世界角色获取攻略王者荣耀世界角色怎么获得全解析
游戏攻略
王者荣耀世界角色获取攻略王者荣耀世界角色怎么获得全解析

《王者荣耀世界》英雄获取全指南:三种核心方式,快速组建强力阵容 在《王者荣耀世界》的开放世界中开启冒险之旅,作为“元流之子”的你,最令人期待的体验莫过于招募那些熟悉与全新的英雄伙伴。无论是伽罗、东方曜等经典角色,还是“冷春”这样的原创人物,他们的独特故事与强大技能,共同构成了这个东方幻想世界的核心吸

热心网友
04.26