Phpstorm、xdebug 和 vagrant 仍在等待传入连接

Posted

技术标签:

【中文标题】Phpstorm、xdebug 和 vagrant 仍在等待传入连接【英文标题】:Phpstorm, xdebug and vagrant still waiting for incoming connection 【发布时间】:2014-11-23 14:51:33 【问题描述】:

这让我很烦,主要是因为它工作正常,然后突然断点停止中断,当我检查调试器时它只是在等待传入连接。

我的流浪机器在private_ip: 192.168.13.37上运行

我的xdebug.ini 配置如下:

zend_extension=/usr/lib/php5/20090626+lfs/xdebug.so
xdebug.remote_enable = on
xdebug.remote_connect_back = on
xdebug.remote_port = 9020

这些是我的 PHPstorm 调试设置:

我在 PHPstorm 中有一个 vagrant 服务器设置,它有一个主机 dev.website.com,它指向 windows 主机文件中的正确 IP,端口是 80,并且文件夹映射正确。

我还设置了 PHP 应用程序以使用已解释的服务器,该服务器的起始 URL 为 /

我点击了开始监听 PHP 调试连接,然后点击了绿色的小错误图标开始调试。这将使用以下查询字符串 ?XDEBUG_SESSION_START=18359 启动项目,但是当我在调试窗口中查看 PHPstorm 时,它会显示 waiting for incoming connection with ide key 18359

任何想法如何让它再次工作?

编辑 新增 xdebug 日志:pastebin

【问题讨论】:

太棒了。 1) xdebug 日志对这种情况有什么说明(请提供片段)?它尝试连接到哪个 IP:端口? 2) 如果它使用正确的详细信息 -- 请检查是否是 PS 监听 xdebug 端口(在您的 PC 上,激活“电话手柄”图标后 -- 运行 netstat 或任何其他工具这可以给你这样的信息——确保它是 PhpStorm 而不是其他软件)3)你确定它不是你的防火墙/安全软件吗?请确认您可以在该端口上从远程计算机连接到本地(激活“电话手柄”图标并从远程使用telnet 我现在刚刚在事件日志中注意到以下内容:09:38:58 Error running Unnamed: Handler with the same session id is already registered 据我所知,这是来自idea.log。如果是这样 - 尝试重新启动 IDE(和 php 进程) - 听起来调试会话以某种方式挂起(没有其他想法可能是什么)。 我已经多次重启了ide和hostpc,销毁并重建了vagrant VM。如果它们对您自己有意义,我已经添加了 xdebug 日志? 您已截断日志。在任何情况下:日志清楚地表明在设置断点时 xdebug 和另一端(PhpStorm?)之间发生了通信。也许它们被设置在错误的文件中?我建议启用“强制中断...”设置来检查。我还将删除“设置 | PHP | 服务器”中的所有条目,并按照零配置方法从头开始配置它们。根据您的信息,没有其他真正的想法。 【参考方案1】:

有同样的问题,帮助我的是设置:

xdebug.remote_autostart = 1

我的其他设置是:

zend_extension=xdebug.so
xdebug.remote_enable=1
xdebug.remote_connect_back=1
xdebug.remote_port=9010
xdebug.idekey=phpstorm
xdebug.remote_autostart = 1
xdebug.remote_handler=dbgp
xdebug.remote_host=10.0.2.2

【讨论】:

xdebug.remote_host=10.0.2.2 - 这解决了我的问题!谢谢【参考方案2】:

你说你有一个指向 80 端口的服务器设置?这可能是问题所在。

我在 PHPstorm 中有一个 vagrant 服务器设置,它有一个 dev.website.com 主机,它指向 windows 主机文件中的正确 IP,端口是 80,并且文件夹映射正确。

您使用 PHP 远程调试吗?

如果是屏幕截图中的服务器设置,请将那里的端口更改为 9020 或任何您想使用的端口。


我检查 xDebug 为何不工作的第一步:

在 PHPStorm 首选项中设置 Break at first Line

preferences->languages&frameworks->PHP->debug(首先搜索中断)

启用在第一行中断功能

还是不行?

你的 phpinfo 是怎么说的? 是否启用了 xDebug 并且所有设置都匹配?

phpinfo()

如果不试试这个https://xdebug.org/wizard.php 看看这个Tutorial

如果可以试试

是否有防火墙阻止了您的端口?

没有? 好的->

vagrant ssh 
netstat -an | grep 9000

检查端口是否正在监听并且没有被任何东西阻塞。

我建议使用端口 9000,与其他人有问题。

我最近遇到了 hhvm 阻塞端口的问题。 我从系统中清除了它。

如果一切正常,请尝试使用 phpstorms 远程调试功能并明确映射您项目的 index.php 文件。


也可以尽量不要使用数值作为你的 idekey

XDEBUG_SESSION_START=18359

大多数人使用这样的东西:

XDEBUG_SESSION_START=PHPSTORM

你可以在你的 xdebug.so 中添加一个 idekey 看起来像这样

xdebug.idekey=PHPSTORM

带有xdebug参数的小清单:https://xdebug.org/docs/basic

我当前的项目 phpstorm 配置如下所示:


这是一个用于在浏览器中设置会话 cookie 的插件 https://chrome.google.com/webstore/detail/xdebug-helper/eadndfjplgieldjbigjakmdgkmoaaaoc

【讨论】:

【参考方案3】:

我在远程服务器上的两台主机遇到了非常相似的问题。

一个叫dev.host.com,另一个叫123.host.com(对应一个临时版本号)。

我的问题是 dev.host.com 在 phpstorm 中与 xdebug 一起工作得很好,而另一个主机总是在等待传入的连接。

我花了几个小时来寻找原因,但通过更改我的 xdebug 参数、我的 phpstorm conf、我的文件夹权限……直到我用一些字母字符(如“abc.host”)重命名了我的 123.host.com .com' 和......它开始工作了!

因此,我建议您小心为主机选择的名称,我认为它没有正确映射...很奇怪,但在我这边解决了。

【讨论】:

以上是关于Phpstorm、xdebug 和 vagrant 仍在等待传入连接的主要内容,如果未能解决你的问题,请参考以下文章

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

phpstorm —— Xdebug 的配置和使用

Minikube 与 PhpStorm 和 Xdebug

给Mac安装配置PHPStorm和Xdebug

Symfony 和 PhpStorm 的 XDebug 不起作用(Ubuntu 安装)

如何连接 PhpStorm 和 Xdebug