2015-06-22 854 views
0

我们正在使用PHP和fsockopen()检查主机是否可用。它适用于标准的ipv4地址,但最近我们开始添加ipv6地址,并且失败。根据fsockopen()的PHP文档,我们只需简单地将ipv6地址放在括号内以便支持ipv6。PHP支持IPv6()

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

然而,我们总是得到:

Network is unreachable 

是否运行PHP需要支持IPv6,以及该服务器的工作?任何其他陷阱?

+3

'请问运行PHP需要支持IPv6,以及这个工作服务器' - ?“我不能够正确地逮捕的那种可能会引发这样一个问题思路的混乱”。是的,是的,在IPv6工作之前,服务器需要支持IPv6。 – TessellatingHeckler

+1

你忘了指定'tcp://'或'udp://' –

+0

我的意思是,如果你这样说。我想也许ipv4服务器可以通过一些PHP网络魔法与ipv6服务器进行通信。 – Justin

回答

2

Network is unreachable

这是底层基础设施的错误消息,并且是最有可能不被PHP本身产生的。这意味着试图到达的网络(在本例中是IPv6全球范围)无法与之通信。这通常是由于配置错误或ISP未能实施IPv6。

运行PHP的服务器是否也需要支持ipv6才能正常工作?

是的。非常非常。将网络协议看作是通过电话线传输的语言;如果两个呼叫者不会说相同的语言,他们将无法相互了解,因此他们的信息将无法访问。

然而,有可以让你NAT或嵌入IPv6的IPv4的范围内,甚至您的ISP服务。这些优惠通常被称为“IPv6隧道”或类似的。在您询问IPv6时,ISP通常是第一步 - 专业服务器主机和数据中心通常会提供一个选项,通过其客户面板启用或订购基本IPv6。

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

一个伟大的stackexchange社会任何形式的服务器配置为https://serverfault.com/和有关IPv6的许多问题已经回答了那里。