fopen():无法打开流:权限被拒绝(当路径权限为777时)

时间:2017-08-24 15:31:04

标签: php linux permissions chmod

  

[重复的]

当所有路径都获得777许可时,

PHP函数fopen()获得了权限错误 服务器详细信息:Centos 7 , PHP 7.1.8 , Apache 2.4.27

PHP源代码:

$myfile = fopen("newfile.txt", "w") or die("Unable to open file!");

错误消息:

  

警告:fopen(newfile.txt):无法打开流:第3行/var/www/html/test/file.php中的权限被拒绝

MyTest Url: http://MyIPAddress/test/file.php

777权限路径:

/var/www  
/var/www/html  
/var/www/html/test
/var/www/html/test/file.php

包含权限的文件列表: (编辑1)

[root@localhost ~]# ls -la /var/www/html/test
total 8
drwxrwxrwx. 2 root root  41 Aug 24 20:26 .
drwxrwxrwx. 4 root root  48 Aug 24 19:37 ..
-rwxrwxrwx. 1 root root 179 Aug 24 20:22 file.php
-rwxrwxrwx. 1 root root   1 Aug 24 20:22 newfile.txt

SELinux已启用&有访问权限列表:

[root@localhost ~]# semanage fcontext -l |grep "var/www"
/var/www(/.*)?                                     all files          system_u:object_r:httpd_sys_content_t:s0
/var/www/html(/.*)?                                all files          system_u:object_r:httpd_sys_rw_content_t:s0
/var/www/(/.*)?                                    all files          system_u:object_r:httpd_sys_content_t:s0
/var/www/html/(.*)?                                all files          system_u:object_r:httpd_sys_rw_content_t:s0

(Edit2)* :如果我禁用SELinux,问题就会解决,问题来自SELinux,我会提出一个新的问题,为什么当我有访问列表时出现错误

1 个答案:

答案 0 :(得分:2)

这听起来很奇怪,如果你有root权限并成功完成了:

sudo chmod 777 -R /var/www  

命令fopen应该没有问题,因为@Kimberlee设置,你shuld尝试为新文件提供绝对路径,就像这样:

$file = fopen('/var/www/html/test/newfile.txt', 'w');
fwrite($file,'something');
chmod('/var/www/html/test/newfile.txt', 0777);