当我在我的一个网站上运行以下代码时:
<?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 :(得分:1)
与您的托管服务提供商核实是否允许PHP发出外部请求。某些共享托管服务提供商禁用了该功能。
答案 1 :(得分:0)
file_get_contents
失败,因为它无法检索手头的内容。最有可能的是,简单的防火墙阻止了所有到非80端口的流量。您必须使用端口80来避免这些简单的防火墙。
无法下载资源会让php发出警告。最有可能的是,生产服务器上不显示警告。检查服务器的日志以及display_errors
和error_reporting
配置。