PHP脚本使用TAIL监视Apache Access日志文件

我写了一个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访问日志自动设置权限