如何检查本地服务器是否可以通过PHP访问?

时间:2012-09-20 16:03:00

标签: php webserver

我的网站在公共网络服务器A上运行,该网络服务器A看不到位于我的内部网上的本地服务器B. 在我的浏览器中,如果我在办公室,我可以在浏览器的地址栏中访问我的内部网。 我还可以在从我的Web服务器A构建的页面上显示位于本地服务器B中的图像。 但是,如果我在服务器A上运行的php中使用file_exists(服务器B上的文件),则它不起作用,因为php脚本在服务器A上运行,而服务器A上没有看到服务器B.

我需要检测浏览器是否可以访问服务器B(在办公室或隧道通过VPN),这样我就可以决定是否显示/下载服务器B上的本地文件或Web服务器上的文件A.怎么能我这样做?

我还需要该功能,看看我是否可以调用我的星号服务器来调用我的pabx。

2 个答案:

答案 0 :(得分:1)

如果我理解你是对的,那么http://php.net/manual/en/function.get-headers.php可能会有所帮助。您可以“ping”远程服务器上的任何文件,检查返回的标头,如果返回的代码是200,则服务器是可访问的。

答案 1 :(得分:0)

当您访问服务器A时,脚本可以评估您的地址(您的办公室地址)并知道它位于一组可以显示来自服务器B的图像的地址中。如果您从办公室外访问服务器A,然后可以将脚本设置为不显示来自B的图像。

您可以在

中找到合适的变量
while(list($key, $val) = each($_SERVER))
{
    $$key = $val;
    printf("%s = %s  \n",$key, $val);
}

当然,建议的解决方案是查看上面的HTTP标头并评估是否

[0] => HTTP / 1.1 200确定

当尝试访问服务器B时,

是否存在也可以解决问题,但是您需要对从IP中可能已经知道的服务器进行失败访问才会失败。

承认,这是一个“硬编码”场景,因为您需要了解服务器A上的IP是否正常 - 而且可能会发生变化。在这种情况下,客户端中的javascript解决方案可能会更加流畅。