我在读取文件时收到以下权限警告:
PHP Warning: fopen(todo.txt): failed to open stream: Permission denied in /var/www/php/oauth/web/insert.php on line 26, referer: https://oauth.dev/dropbox_finish.php?state=5
只需执行以下代码即可出现此问题:
try{
$f = fopen("todo.txt", "r+");
...
}
我已经用权限做了很多事情,让我展示当前的,然后我会展示其余的。
[root@windows8 abel]# ls -lah /var/www/php
total 32K
drwxr-xr-x. 8 abel apache 4.0K Jun 3 15:53 .
drwxr-xr-x. 6 root root 4.0K May 29 12:38 ..
drwxr-xr-x. 3 abel abel 4.0K May 25 11:38 backup
drwxr-xr--. 6 abel apache 4.0K May 28 16:00 oauth
drwxr-xr-x. 8 abel apache 4.0K Apr 16 16:22 teamerp
drwxrwxr-x. 2 abel abel 4.0K Apr 16 17:18 TeamERP
drwx------. 5 abel abel 4.0K Apr 27 17:14 wordpress
drwx------. 6 abel abel 4.0K Jun 3 15:55 wp-test
[root@windows8 abel]# ls -lah /var/www/php/oauth/
total 36K
drwxr-xr--. 6 abel apache 4.0K May 28 16:00 .
drwxr-xr-x. 8 abel apache 4.0K Jun 3 15:53 ..
drwxr-xr--. 2 abel apache 4.0K Jun 7 11:56 app
-rwxr-xr--. 1 abel apache 124 May 25 16:05 composer.json
-rwxr-xr--. 1 abel apache 3.5K May 25 16:19 composer.lock
-rwxr-xr--. 1 abel apache 9 May 23 12:39 .gitignore
drwxrwxr-x. 3 abel apache 4.0K May 24 17:54 nbproject
drwxr-xr--. 5 abel apache 4.0K May 25 16:19 vendor
drwxr-xr--. 4 abel apache 4.0K Jun 8 15:16 web
[root@windows8 abel]# ls -lah /var/www/php/oauth/web/
total 36K
drwxr-xr--. 4 abel apache 4.0K Jun 8 15:16 .
drwxr-xr--. 6 abel apache 4.0K May 28 16:00 ..
drwxrwxr-x. 2 abel apache 4.0K May 28 16:00 css
-rw-rw-r--. 1 abel apache 5.4K Jun 8 17:37 dropbox_finish.php
-rwxr-xr--. 1 abel apache 109 May 28 09:59 index.php
-rw-rw-r--. 1 abel apache 1.3K Jun 8 17:50 insert.php
drwxrwxr-x. 2 abel apache 4.0K Jun 7 11:36 js
-rwxrwxrwx. 1 abel apache 55 Jun 8 17:50 todo.txt
[root@windows8 abel]#
该文件是.todo.txt
它具有777
权限,该网站可以正常工作,但是该文件应该是打开的才能写入。如果 apache 所服务的 html 和 php 文件与其他任何文件相比,这是唯一的区别。
用户abel
是apache
组的成员。我也试图让用户拥有的文件apache
,它没有工作,除了 apache 可以读取其余的 web 文件,它只是这个。有什么提示吗?
编辑:我创建了一个文件夹并将文件放入其中。运行以下内容:
echo substr(sprintf('%o', fileperms('todo/todo.txt')), -4);
结果是0777
。我不知道发生了什么,php实际上看到了该文件,但我仍然收到错误消息。
EDIT2:我还执行了以下命令以了解文件是否是 selinux 问题。
semanage fcontext -a -t httpd_sys_rw_content_t /var/www/php/oauth/web/todo/todo.txt
没有结果。