Phpstorm + xdebug:尽管服务器主机可能不是本地主机,但远程主机配置为“localhost”

Posted

技术标签:

【中文标题】Phpstorm + xdebug:尽管服务器主机可能不是本地主机,但远程主机配置为“localhost”【英文标题】:Phpstorm + xdebug : Remote host is configured as "localhost" despite server host is probably not local 【发布时间】:2016-06-30 08:09:50 【问题描述】:

我正在关注这个instruction 来验证我在 Web 服务器上的调试器配置。我使用的远程服务器的 FTP 连接已经过测试,但我收到了这条警告消息

尽管服务器主机可能不是本地主机,但远程主机被配置为“localhost”

我的第一个问题是:“远程主机”和“服务器主机”分别指的是什么?

我知道远程主机是设置xdebug.remote_host,根据xdebug documentation,它是“运行调试客户端的主机”。

这让我很困惑:调试客户端不是我在本地机器上运行的 IDE 吗?

如果是,那么“运行调试客户端的主机”不应该是我本地机器的 IP 地址吗?如果再次是,我是否应该将xdebug.remote_host 配置为我的 IP?

我尝试将其设置为我的 IP,警告消息没有显示,但感觉不对,因为后来我用随机 IP 尝试了该消息也没有显示。

其次,xdebug documentation 还表示如果启用了xdebug.remote_connect_back,则此xdebug.remote_host 设置将被忽略。”虽然不太确定此设置的作用,但我将其设置为“打开”,如图所示:

我希望这会消除警告消息,但它仍然存在。那么如何摆脱这条消息呢?

【问题讨论】:

1) 如果您 在远程服务器上 安装了 xdebug,那么 remote_host 应该有一个运行 phpStorm 的计算机的 IP,从远程服务器可以看出。为此,您需要确保在您的防火墙/路由器上打开 xdebug 端口——换句话说——xdebug 能够连接到您的计算机(因为这正是它的工作方式——xdebug.org/docs/remote)。 2) remote_connect_back 可能很危险——任何发出“调试此”命令的人都可以与您的 xdebug 通信。但是如果你乐于使用它..那么你可以忽略 IDE 所说的。 谢谢。你在回答我的问题。如果我证明了你所说的,那么这应该是答案。 3) 如果您可以建立与服务器的 SSH 连接.. 那么您可以通过 SSH 进行调试,在这种情况下,remote_host 必须是本地 IP(例如 127.0.0.1)4)@ 987654336@ 可以在服务器位于 LAN 中时使用(例如,您旁边的某个虚拟机或物理服务器) 文档急需大修。本地机器和“远程服务器”的问题不仅仅针对您。 【参考方案1】:

就我而言,我为不同的项目设置了几个 apache 虚拟主机。我可以通过不同的网址访问项目,例如:http://projectname1http://anotherproject2

在进行 xdebug 验证时,我在 PhpStorm 中遇到了同样的错误:

远程主机配置为“localhost”,尽管服务器主机是 可能不是本地的

问题已修复,在 php.ini 中 xdebug.remote_host 与我正在调试的项目的 URL 匹配。所以,如果我在调试http://project1,我会在 php.ini 中有这个:

xdebug.remote_host="project1"

值为 127.0.0.1,或者 localhost 没有修复它。

希望对某人有所帮助。

【讨论】:

我使用 vagrant + homestead 的设置与您的设置相似,我听从了您的建议。尽管错误消息从未消失,但它似乎并没有妨碍我进行远程调试。我可以放置一个断点,它会按预期中断。希望它可以帮助某人。【参考方案2】:

您是否尝试过关注?

xdebug.remote_host = "127.0.0.1"

【讨论】:

将 phpStorm 上的调试器设置更改为(本地 Web 服务器或共享文件夹)。无论如何,它将在 localhost 中进行调试。 我想做远程调试,关注这个confluence.jetbrains.com/display/PhpStorm/… 但是,从您的 phpinfo() 开始,您已经在本地设置了 xdebug。可能以下链接可能会有所帮助。 ***.com/questions/7234471/… 因为之前您将 remote_host 指定为 localhost。你在哪里设置xdebug?如果不在 localhost 中,请使用正确的机器 IP,并检查端口 9000 是否可访问。 (在命令提示符下尝试“telnet host 9000”以检查它是否可以访问) xDebug 安装在远程服务器上。我将xdebug.remote_host 设置为其IP,并且验证通过了。但我仍然对我在主要问题中提出的那些问题感到非常困惑。

以上是关于Phpstorm + xdebug:尽管服务器主机可能不是本地主机,但远程主机配置为“localhost”的主要内容,如果未能解决你的问题,请参考以下文章

PHPStorm、Xdebug 和远程调试(在 phpstorm 中使用 FTP)

将 Xdebug 与 PhpStorm 和 WSL 一起使用

PHPStorm xdebug配置

wampserver+phpstorm+xdebug

是否可以转发 Xdebug 连接?

phpstorm+xdebug+dbgp远程多用户调试