我们正在使用PHP和fsockopen()
来检查主机是否可用。它适用于标准的ipv4地址,但最近我们开始添加ipv6地址,但它失败了。根据{{1}}的PHP文档,我们只需要将ipv6地址括在括号中,以便支持ipv6。
fsockopen()
然而,我们总是得到:
fsockopen('[2a03:b0c0:3:d0::14a:e001]', 80, $return_error_number, $return_error, 10);
运行PHP的服务器是否需要支持ipv6才能实现此功能?还有其他问题吗?
答案 0 :(得分:2)
Network is unreachable
这是底层基础架构的错误消息,很可能不是由PHP本身生成的。这意味着无法与尝试联系的网络(在这种情况下是IPv6全局范围)进行通信。这通常是由于ISP配置错误或无法实现IPv6。
运行PHP的服务器是否需要支持ipv6才能使其正常工作?
是。非常如此。将网络协议视为通过电话线说出的语言;如果两个来电者不会说同一种语言,他们就无法相互理解,因此他们的信息将无法相互接触。
然而,有些服务允许您在IPv4中嵌入NAT或嵌入IPv6,甚至可能由您的ISP。此类优惠通常标题为" IPv6隧道"或类似的。通过ISP查询IPv6通常是一个很好的第一步 - 专业服务器托管商和数据中心通常会提供通过其客户面板启用或订购基本IPv6的选项。
检查是否为特定环境正确配置了IPv6,或者是否要使用隧道服务。如果没有其他简单的方法可以获得全局IPv6连接,那么您可能无法使代码工作。
任何类型的服务器配置的一个很棒的stackexchange社区是https://serverfault.com/,关于IPv6的许多问题已经在那里得到解答。