在端口 8080 的网站上使用 file_get_contents() 时出现空白页
当我在我的网站之一上运行以下代码时:
<?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才能取到文件内容?
When I run the following code on one of my websites:
<?php
$thing = file_get_contents("http://mywebsite.com:8080/Public");
echo($thing);
?>
It returns expected result, the contents of http://mywebsite.com:8080/Public
But when I run it on my other website (hosted on by a different company), it does not display anything. No errors and not the contents of http://mywebsite:8080/Public. However, if I run the following code:
<?php
$thing = file_get_contents("http://somerandomwebsite.com");
echo($thing);
?>
It returns the contents of somerandomwebsite.com. Is there a reason why it works on one of the websites and not the other? Why can it only fetch the contents of the file if the port is 80?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
请咨询您的托管提供商是否允许 PHP 发出外部请求。一些共享托管提供商禁用此功能。
Check with your hosting provider if it allows PHP to make external requests. Some shared hosting providers disable that.
file_get_contents
失败,因为它无法检索手头的内容。最有可能的是,简单的防火墙会阻止所有流向非 80 端口的流量。您必须使用端口 80 来避开这些简单的防火墙。下载资源失败会使 php 发出警告。最有可能的是,警告不会显示在生产服务器上。检查服务器日志和
display_errors
和error_reporting
< /a>配置。file_get_contents
fails because it cannot retrieve the content at hand. Most likely, a simplistic firewall is blocking all traffic to non-80 ports. You'll have to use port 80 to avoid these simplistic firewalls.The failure to download the resource makes php emit a warning. Most likely, warnings are not displayed on the production server. Check the server's log and the
display_errors
anderror_reporting
configurations.