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)