Php fsockopen()在本地主机和www服务器上返回不同的值

Php fsockopen()在本地主机和www服务器上返回不同的值,php,Php,我正在使用上面的代码ping一些设备 在本地主机上使用命令行或运行代码时,设备没有应答;这是预期的,因为设备无法发送任何应答包 然而,当我在www服务器上运行代码时,fsockopen返回TRUE 你知道为什么会这样吗?或者我如何检查设备是否发送了一些数据包作为响应。我知道fsockopen只检查连接。根据,fsockopen打开一个连接并返回一个资源,成功时返回的不是TRUE 有很多原因导致它无法在本地计算机上运行。我可以考虑几个,但在失败的调用返回后,您可以通过检查$errno和$errst

我正在使用上面的代码ping一些设备

在本地主机上使用命令行或运行代码时,设备没有应答;这是预期的,因为设备无法发送任何应答包

然而,当我在www服务器上运行代码时,fsockopen返回TRUE

你知道为什么会这样吗?或者我如何检查设备是否发送了一些数据包作为响应。我知道fsockopen只检查连接。

根据,fsockopen打开一个连接并返回一个资源,成功时返回的不是TRUE


有很多原因导致它无法在本地计算机上运行。我可以考虑几个,但在失败的调用返回后,您可以通过检查$errno和$errstr变量的值来找到确切的原因。

您说您ping了一些设备。在你的测试中,$ip的价值是什么?很好,它在我的本地计算机上不起作用,我不知道为什么它在www上起作用,这就是问题所在,它不应该起作用。在本地,我得到errno=10060,我也希望在www上得到这个结果。这可能是由PHP版本引起的吗?在wampserver本地主机上,我得到了Windows上更高版本的.10060。但是,$ip的值是多少?您是否尝试过将其与FALSE进行类型比较?i、 如果$ping==FALSE?是的,我试过了。结果是!==在服务器上为FALSE,所以它不起作用。@pavon147,我问的是IP地址,因为你说的是某个设备。当我从电脑连接到某个设备时,我的手机会通过本地Wi-Fi网络进行连接,两个设备的专用地址都以192.168开头。这可能是不同行为的原因,因为私有地址可以分配给不同网络中的不同设备,但这不是您的情况。您提供的IP地址无法从我的计算机访问。也许它位于防火墙后面,而您的服务器位于防火墙的同一侧,并且可以访问它?
$ping=fsockopen($ip, 80, $errno, $errstr, 30);