【问题标题】:PHP can't connect to localhost XMPP server on port 5222PHP 无法连接到端口 5222 上的 localhost XMPP 服务器
【发布时间】: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 客户端连接。

标签: php xmpp ejabberd stream-socket-client


【解决方案1】:

selinux 需要关闭,或者允许 apache 与 xmpp 对话

【讨论】:

    【解决方案2】:

    许多服务器默认不监听环回设备,或者只监听 ::1 或 127.0.0.1 并让 localhost 指向另一个。做检查:

    % netstat -an | grep 5222
    

    并检查输出中的 LISTEN 行,该行显示您的服务器正在侦听的位置。

    最后,尝试使用您的盒子的 IP 地址明确作为连接主机名。

    【讨论】:

      【解决方案3】:

      有时您只需要在线上偷看一下就可以知道到底发生了什么。 Windump(tcpdump) 在这些情况下是你的朋友。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-03-15
        • 2021-12-24
        • 2013-08-27
        • 2011-09-29
        • 2014-11-04
        相关资源
        最近更新 更多