【问题标题】:Cannot connect to port on vps无法连接到 vps 上的端口
【发布时间】:2016-01-25 09:59:37
【问题描述】:

我的 PHP 脚本使用如下套接字打开端口:

$socket = stream_socket_server('tcp://127.0.0.1:' . $this->port, $errno, $errstr);

例如说端口是 58889。

我无法从 telnet 连接到端口(连接被拒绝)。

这是“netstat -plunt”命令显示的内容:

tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      -               
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -               
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      -               
tcp        0      0 127.0.0.1:58889         0.0.0.0:*               LISTEN      13849/php       
tcp        0      0 127.0.0.1:58890         0.0.0.0:*               LISTEN      13841/php       
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      -               
tcp        0      0 127.0.0.1:58891         0.0.0.0:*               LISTEN      13857/php       
tcp6       0      0 :::22                   :::*                    LISTEN      -               
tcp6       0      0 :::25                   :::*                    LISTEN      -          

托管服务提供商没有特殊的防火墙规则。如何解决?

【问题讨论】:

  • 你只在localhost ip地址上收听?您是否也应该监听external IP 地址(0.0.0.0 表示机器上的所有地址)?除非您只想从同一台机器连接?
  • 谢谢 )) 你说的完全正确!
  • @RyanVincent 将其格式化为答案,以便 Eugene 可以接受...
  • @RyanVincent 第一点对尤金来说是正确的,因为他是 SE 的新手。但实际上,这就是网站的运作方式......以及谷歌如何索引它。以及如何过滤问题。 + 我给了你一些关于答案的评分反馈,所以值得;)
  • @TomerW,感谢您的支持。非常感谢 - 我喜欢在 'SO' 上待在这里,很有趣 :)

标签: php sockets port vps


【解决方案1】:

问题在于 TCP 服务器只监听localhost IP 地址上的连接。

这将只允许来自“本地”机器的连接。

要指定侦听机器上所有 IP 地址上的连接,这将允许来自外部机器的连接,然后使用 IP 地址“0.0.0.0”(IPv4):

stream_socket_server('tcp://0.0.0.0:' . $this->port, $errno, $errstr); 

【讨论】:

    猜你喜欢
    • 2015-05-22
    • 2016-11-22
    • 2016-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-29
    • 1970-01-01
    相关资源
    最近更新 更多