我写了一个PHP脚本来监控apache的access_log文件。 我正在使用以下命令;
$path_to_tail = '/usr/bin/tail'; $path_to_access_file = '/var/log/httpd/access_log';
错误日志显示:/ usr / bin / tail:无法打开用于读取的“/ var / log / httpd / access_log”:Permission denied
我在RHEL Linux发行版上。
改变了他人权限访问只有现在它的工作原理,我没有改变任何东西
你说错误是:
/usr/bin/tail: cannot open `/var/log/httpd/access_log' for reading: Permission denied
默认情况下,/ var / log / httpd /的权限是只有root用户可以读写该目录。 日志logging由作为根运行的父httpd进程处理。 这个进程的subprocess以用户'apache'运行,并且不能访问该目录:
user@host:~ $ ls -ld /var/log/httpd/ drwx------. 2 root root 4096 Feb 11 11:44 /var/log/httpd/
一个短期的修复是更改/var/log/httpd
的权限:
user@host:~ $ sudo chgrp apache /var/log/httpd/ user@host:~ $ sudo chmod g+rx /var/log/httpd/ user@host:~ $ sudo ls -la /var/log/httpd/ total 608 drwxr-x---. 2 root apache 4096 Feb 11 11:44 . drwxr-xr-x. 9 root root 4096 Feb 18 02:36 .. -rw-r--r--. 1 root root 0 Feb 11 11:44 access_log -rw-r--r--. 1 root root 596654 Feb 7 12:04 access_log-20130211 -rw-r--r--. 1 root root 693 Feb 18 02:36 error_log -rw-r--r--. 1 root root 11531 Feb 11 11:44 error_log-20130211
但是,请谨慎使用。 Apache的devise人员为了安全起见, select使用Apache的/var/log/httpd/
不可读。 现在我不记得他们为什么select这个devise,但也许别人可以参与进来。
另请参阅Stackoverflow:Apache访问日志自动设置权限