【发布时间】:2017-10-25 12:06:05
【问题描述】:
我有 Ubuntu 16.04,上面有 Apache2 和 php7。 我不想用 php 读取一些日志文件并打印它们。 所以我做一个简单的
readfile("/var/log/apache2/access.log");
但这不起作用。我收到此错误:
Warning: readfile(/var/log/apache2/access.log): failed to open stream: Permission denied in /var/www/test.php on line 2
我很确定我已经设置了正确的权限,Apache 和 php 作为 www-data 运行,所以我将用户 www-data 添加到组“adm”和“syslog”,因为这些组具有读取权限对于整个文件路径和文件本身。 权限默认为 640,但仅当我将其设置为 647 时,该文件才可用于 php/apache。即使 644 或 646 也不够。
这是为什么呢?我是否必须更改 Apache vhost 配置中的某些内容?
补充:ls -alp /var/log/apache2
drw-r----- 2 root adm 4096 Oct 25 11:07 ./
drwxr-xr-x 9 root syslog 4096 Oct 25 10:39 ../
-rw-r----- 1 root adm 47861 Oct 25 14:01 access.log
-rw-r----- 1 root adm 12014 Oct 25 14:01 error.log
-rw-r----- 1 root adm 0 Oct 25 10:40 other_vhosts_access.log
【问题讨论】:
-
请将此添加到问题中:cd /var/log/apache2; ls -alp
-
@Tenbo:他已经说过647没问题。看起来他需要 o=rwx 来读取他的文件,这很奇怪。这就是为什么我让他在 /var/log/apache2 上发布 ls -alp。
-
@Nic 已添加到我的起始帖子中
标签: php permissions readfile