Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 文件获取内容($url)返回bool(false)_Php_File Get Contents - Fatal编程技术网

Php 文件获取内容($url)返回bool(false)

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(

我在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(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