CentOS 上的 PHP file_get_contents 错误

CentOS 上的 PHP file_get_contents 错误

文件获取内容(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"));'

相关内容