【问题标题】:socket_bind(): unable to bind address [99] (Ubuntu on Amazon EC2)socket_bind():无法绑定地址 [99](Amazon EC2 上的 Ubuntu)
【发布时间】:2012-05-30 00:12:30
【问题描述】:

我正在尝试在 EC2 实例上使用套接字,但是当我尝试运行代码时出现以下错误:

PHP 警告:socket_bind():无法绑定地址 [99]:不能 在第 45 行的 sockets_test.php 中分配请求的地址

以下是部分相关代码:

$CFG = new stdClass();
$CFG->chat_serverip = 'MY_PUBLIC_EC2_IP';
$CFG->chat_serverport = '9111';

$listen_socket = socket_create(AF_INET, SOCK_STREAM, 0))
socket_bind($listen_socket, $CFG->chat_serverip, $CFG->chat_serverport)

如果我使用 127.0.0.1 或私有 IP,这很好用。 我的安全组有以下规则:

0-65535 0.0.0.0/0 (TCP)
0-65535 0.0.0.0/0 (UDP)
ALL 0.0.0.0/0 (ICMP)

【问题讨论】:

  • hmmm...如果我绑定到 0.0.0.0 它确实有效 它应该如何工作? stackoverflow.com/questions/7556811/…
  • socket 绑定到你的 ip(某个接口的 ip)或 0.0.0.0(意思是任何)。这就是您定义套接字可访问的接口的方式。然后将 (socket_connect) 连接到一个 IP(例如 cloudflare dns 服务器的 1.1.1.1 IP)。

标签: php sockets amazon-ec2


【解决方案1】:

您不能绑定到外部 IP,您必须绑定到内部 IP,并设置一个规则以允许该端口,以便当他们连接到外部 IP 和端口时,它会被重定向到内部 IP。

【讨论】:

  • 你能解释一下吗...我对此有点陌生。一点解释将不胜感激。
【解决方案2】:

phantomjs有问题,

我们需要绑定内部ip的我们可以在ifconfig看到, 不是我们无法看到的外部 IP

【讨论】:

    猜你喜欢
    • 2014-08-04
    • 1970-01-01
    • 2018-05-11
    • 2019-07-25
    • 2013-04-02
    • 1970-01-01
    • 1970-01-01
    • 2020-06-06
    • 1970-01-01
    相关资源
    最近更新 更多