file_get_contents failed to open stream: Permission denied in xxx解决办法

来源:互联网 发布:满族饮食 知乎 编辑:程序博客网 时间:2024/06/05 23:56

新配的lamp环境,出现如下错误:

file_get_contents(http://x.x.x.x:9898/aa/bb/cc.php): failed to open stream: Permission denied in /var/www/html/a/b/c.php on line 3


很多网友说是文件夹权限错误,于是通过“chmod -R 777 /你的文件夹”更改所在文件夹的权限,但不起作用,还是报错。


几经痛苦测试排错,发现更换file_get_contents的url:“http://x.x.x.x:9898/aa/bb/cc.php”,发现不带端口的file_get_contents是正常的,所以肯定不是文件夹的权限问题,


再通过网友写的《file_get_contents不能获取带端口的网址》(http://www.111cn.net/phper/31/48374.htm),最终顺利解决。

解决办法如下:


例子

<?php
echo file_get_contents("test.txt");
?>

输出:

This is a test file with test text.

同样此函数还可以用于获取远程服务器上的内容


file_get_contents('http://www.111cn.net');

这样也是没有问题,但是如果我带了端口了就有问题了


例如:


file_get_contents('http://localhost:12345');


没有任何获取。

解决方法是 :关闭selinux

1 永久方法 – 需要重启服务器

修改/etc/selinux/config文件中设置SELINUX=disabled ,然后重启服务器。

2 临时方法 – 设置系统参数

使用命令setenforce 0

附:

setenforce 1 设置SELinux 成为enforcing模式
setenforce 0 设置SELinux 成为permissive模式

php的allow_url_fopen选项是关闭了

原因是我们php.ini中把php的allow_url_fopen选项是关闭了,我们只要把它打开即可。

如果你没有权限打开allow_url_fopen的话我们可使用curl函数的来替换,也是很方法的。


0 0