PHP 无法连接到端口 5222 上的 localhost XMPP 服务器
Posted
技术标签:
【中文标题】PHP 无法连接到端口 5222 上的 localhost XMPP 服务器【英文标题】:PHP can't connect to localhost XMPP server on port 5222 【发布时间】:2010-04-05 23:32:27 【问题描述】:我已经在我的 Windows 机器上本地安装了 ejabberd,我还安装了 Apache、php 和 mysql。我还确认它使用 Digsby 效果很好,并且通过创建一些用户、发送一些消息等方式进行了一些改进。一切都很好。
但是,PHP 无法使用 stream_socket_client 将流打开到端口 5222。即使在最简单的级别:
stream_socket_client("tcp://localhost:5222", $errno, $errstr, 30, STREAM_CLIENT_CONNECT);
返回超时错误。但是,再次使用 IM 客户端连接到端口 5222 上的 localhost 可以正常工作。 (使用 stream_socket_client 在端口 80 上打开到 localhost 的简单连接也可以。)
有什么想法吗?我被困住了!
【问题讨论】:
您 1) 检查错误信息是什么? 2)检查服务器是否正在运行,即在本地主机上? 是的,错误消息只是说连接超时:“连接尝试失败,因为连接方在一段时间后没有正确响应,或者建立连接失败,因为连接的主机没有响应。”正如我上面所说,服务器正在运行并且可以从标准 IM 客户端连接。 【参考方案1】:selinux 需要关闭,或者允许 apache 与 xmpp 对话
【讨论】:
【参考方案2】:许多服务器默认不监听环回设备,或者只监听 ::1 或 127.0.0.1 并让 localhost 指向另一个。做检查:
% netstat -an | grep 5222
并检查输出中的 LISTEN 行,该行显示您的服务器正在侦听的位置。
最后,尝试使用您的盒子的 IP 地址明确作为连接主机名。
【讨论】:
【参考方案3】:有时您只需要在线上偷看一下就可以知道到底发生了什么。 Windump(tcpdump) 在这些情况下是你的朋友。
【讨论】:
以上是关于PHP 无法连接到端口 5222 上的 localhost XMPP 服务器的主要内容,如果未能解决你的问题,请参考以下文章
Asmack 18 连接:google.com:5222 异常:无法连接到 talk.google.com 远程服务器超时
Windows 10 上的 RabbitMQ - 无法连接到 epmd:地址(无法连接到主机/端口)