2012-02-06 117 views
0

当我在我的网站的一个运行下面的代码:空白页8080

<?php 
    $thing = file_get_contents("http://mywebsite.com:8080/Public"); 
    echo($thing); 
    ?> 

它返回预期的结果,http://mywebsite.com:8080/Public

但是,当内容我在我的另一个网站(由另一家公司托管的)上运行它,它不显示任何内容。没有错误,而不是http://mywebsite:8080/Public的内容。但是,如果我运行以下代码:

<?php 
    $thing = file_get_contents("http://somerandomwebsite.com"); 
    echo($thing); 
    ?> 

它返回somerandomwebsite.com的内容。是否有一个原因为什么它在一个网站上运行,而不是另一个?为什么只有端口是80时才能获取文件的内容?

回答

0

file_get_contents失败,因为它无法检索手头的内容。最有可能的是,一个简单的防火墙阻止所有流量到非80端口。您必须使用端口80来避免这些简单的防火墙。

未能下载资源会使PHP发出警告。很可能,生产服务器上不会显示警告。检查服务器的日志和display_errorserror_reporting配置。

+0

有没有不同的方法来绕过防火墙,因为没有办法修改我需要连接的端口 – DontTurnAround 2012-02-06 00:41:12

+0

@ user1036238您可以设置一个代理,不是吗?只需选择一个域,并将所有HTTP请求(在端口80上)代理到域8080端口上的正确域。除此之外,您可以尝试使用HTTPS,但这不太可能。为什么你认为没有办法修改你需要连接的端口? – phihag 2012-02-06 00:45:14

+0

我试图连接的网站是由Minecraft服务器包装器McMyAdmin运行的网络服务器。所以设置代理并不是一个真正的选择。我只想使用8080而不是80,但如果它是唯一的选择,我可以更改它 – DontTurnAround 2012-02-06 00:50:15

1

如果允许PHP发出外部请求,请咨询您的托管服务提供商。一些共享主机提供商禁用了该功

+0

我不认为是这种情况,因为请求正与somerandomwebsite.com一起工作,只是不是http://mywebsite.com:8080/Public – DontTurnAround 2012-02-06 00:39:36

+0

同样的原则适用,有时某些端口因安全原因被阻塞。例如,Hosgator块8080. – 2012-02-06 00:44:39