fsockopen() 中的 PHP ipv6 支持

标签 php ipv6 fsockopen

我们使用 PHP 和 fsockopen() 来检查主机是否可用。它对于标准 ipv4 地址非常有效,但最近我们开始添加 ipv6 地址,但它失败了。根据 fsockopen() 的 PHP 文档,我们只需将 ipv6 地址括在括号中即可支持 ipv6。

fsockopen('[2a03:b0c0:3:d0::14a:e001]', 80, $return_error_number, $return_error, 10);

但是,我们总是得到:

Network is unreachable

运行 PHP 的服务器是否也需要支持 ipv6 才能正常工作?还有其他问题吗?

最佳答案

Network is unreachable

这是底层基础设施的错误消息,很可能不是由 PHP 本身产生的。这意味着无法与尝试访问的网络(在本例中为 IPv6 全局范围)进行通信。这通常是由于 ISP 配置错误或未能实现 IPv6。

Does the server running PHP need to support ipv6 as well for this to work?

是的。非常如此。将网络协议(protocol)视为通过电话线使用的语言;如果两个调用者使用的语言不同,他们将无法相互理解,因此他们的信息将无法相互访问。

但是,有些服务可以让您在 IPv4 中进行 NAT 或嵌入 IPv6,甚至可以由您的 ISP 提供。此类优惠通常标题为“IPv6 隧道”或类似名称。向您的 ISP 询问 IPv6 通常是良好的第一步 - 专业服务器托管商和数据中心通常会提供通过其客户面板启用或订购基本 IPv6 的选项。

检查 IPv6 是否已针对您的特定环境正确配置,或者您是否想使用隧道服务。如果没有其他简单的方法让您获得全局 IPv6 连接,那么您可能无法让您的代码正常工作。

任何类型的服务器配置的一个很棒的 stackexchange 社区是 https://serverfault.com/许多有关 IPv6 的问题已在那里得到解答。

关于fsockopen() 中的 PHP ipv6 支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30970772/

相关文章:

javascript - 当 <option> 来自使用 php mysqli_query 的 sql 时,onchange 不会触发

c++ - IPv6 区域索引和 scope_id

php - 如何修复 php.DEBUG : fsockopen() :Connection refused?

php - 无法通过 fsockopen 在 PHP 中建立 TLS 连接

php - 使用 PHP 在 Mysql 中存储和检索 JPG

php - 如何调用祖 parent 方法而不出现 E_STRICT 错误?

php - 在数据库中插入单选按钮输入

python - 在 Python 中接收 UDPv6 多播

google-cloud-platform - 如何从 IPV6 地址连接到 GCP(Google Cloud Platform)Cloud SQL 实例?

php_network_getaddresses : getaddrinfo failed: Name or service not known