文件获取内容(http://mirror.facebook.net/centos/timestamp.txt) [function.file-get-contents]: 无法打开流:HTTP 请求失败!
新安装的 CentOS 5.3 机器出现错误。问题出在哪里?
[编辑] 我可以使用 wget 获取文件,我的网站也可以获取 RSS 源,但是当我尝试 file_get_contents() 时,我得到了上述错误。我不想更改它,因为它位于我正在使用的 Joomla! CMS 的核心中。
提前致谢 :)
[编辑2] 我将 PHP 更新到 5.2.10,但情况仍然一样。
答案1
这将帮助你(和我们)准确找出问题
strace php -r 'print_r(file_get_contents("http://mirror.facebook.net/centos/timestamp.txt"));'
确保已安装 strace 并将输出粘贴到这里,不应太长,您可能会自己看到一些错误并找到原因。
如果你找不到问题所在,请把 strace 的输出贴到这里,这样会更容易定位问题。
答案2
我的第一反应是,这很可能是 SELinux 阻止了您的 PHP 脚本进行出站网络连接。此功能默认启用,以帮助提高安全性。您通常可以通过键入以下内容来启用此功能
setsebool -P httpd_can_network_connect 1
答案3
经过一番搜索,似乎您必须确保在 php.ini 中启用了 allow_url_fopen。
答案4
对我来说,这听起来更像是连接问题。盒子是否依赖任何代理来连接互联网?
我赞同安迪在评论中的建议,首先尝试 wget 来确定没有连接问题。
还可以尝试使用 PHP CLI 进行简单测试。
php -r'print_r(file_get_contents("http://mirror.facebook.net/centos/timestamp.txt"));'