Php 文件获取内容($url)返回bool(false)
我在Centos上使用php-5.6.30和Apache 2.2.15。我正在使用以下代码:Php 文件获取内容($url)返回bool(false),php,file-get-contents,Php,File Get Contents,我在Centos上使用php-5.6.30和Apache 2.2.15。我正在使用以下代码: $uri = trim(urldecode($_REQUEST['uri'])); $validate_content = @file_get_contents($uri); echo $validate_content; 我访问它就像:“URL在这里” 每当我使用像这样的网址,它是工作良好。但每当我使用URL like或它返回bool(false)时 当我在WindowsWampServer(
$uri = trim(urldecode($_REQUEST['uri']));
$validate_content = @file_get_contents($uri);
echo $validate_content;
我访问它就像:“URL在这里”
每当我使用像这样的网址,它是工作良好。但每当我使用URL like或它返回bool(false)时
当我在WindowsWampServer(Apache2.4.18-PHP5.6.19-MySQL 5.7.11)上运行相同的代码(上面的代码)并访问它时。它工作得很好。但是,当我在Centos(Apache 2.2.15,php-5.6.17-3(cli)上使用相同的代码时,它不起作用。使用cURL而不是file\u get\u contents。此链接将非常有用 您还可以在
php.ini
文件中选中allow\u url\u fopen
或者您也可以使用
curl
而不是file\u get\u contents
可能是httpd的SELinux设置禁止某些出站连接。请尝试检查以下设置:
$ getsebool httpd_can_network_connect
httpd_can_network_connect --> off
如果设置为“关闭”,请尝试启用它:
$ sudo setsebool -P httpd_can_network_connect on
$ getsebool httpd_can_network_connect
httpd_can_network_connect --> on
现在,您的httpd服务器应该能够进行传出连接。我不太清楚为什么它已经可以连接到http://www.example.com
,但不是localhost,但这解决了我的系统上的相同问题
虽然这可能会解决您的问题,但在更改此设置和其他设置时要小心。可能会有不可预见的安全影响,因此您应该在生产中使用此解决方案之前对其进行检查
您可以看到影响httpd的所有设置:
$ getsebool -a | grep httpd
$ getsebool -a | grep httpd