Apache错误日志 – 如何仅当根访问通常时,如何查看网页(用于内部Intranet服务器)?

我希望能够将error_log显示为网页,以便同事(无根权限)可以查看此问题,以解决PHP开发问题。

在我的CentOS 5.x机器上,错误日志位于:/ var / log / httpd / error_log,目录只有root权限。

我会写一个CGI脚本来显示日志,但是当它运行在apache进程中时,这不是root,所以日志文件不能被访问。 (试过了)。 令我感到困惑的是,即使包含的目录是根访问权限,apache也可以通过写入来logging错误。

我怎么能达到我的目标? 或者你可以提出一个替代scheme吗?

实际上,在某些情况下,我可能不会使用我的其他答案,但我会保留在这里作为参考。

如果你的同事被给了他们自己的VirtualHost,我会设置这个虚拟主机将他们的日志输出到一个不同的目录,这样他们只会看到他们系统的错误:

<VirtualHost *:80> ServerName colleagues.vhost.com DocumentRoot ... ... ErrorLog /home/user/errorlog-colleagues.vhost.com </VirtualHost> 

另外,如果.htaccess文件启用,让他们只需输出他们的PHP错误日志到他们想要的位置,例如:

/path/to/webroot/.htaccess:

 php_value error_log /home/user/phperrorlog-colleagues.vhost.com 

你可以改变文件的权限…如果没有,你可以有一个cron作业每分钟运行一个rsync从apache日志文件到另一个文件(你可以设置权限读取),然后显示在网页。

也有方法可以改变Apache的日志logging机制,这取决于你改变configuration的能力。

我将更改/ var / log / httpd目录上的权限以解决从控制台访问文件的问题。

添加一个新的组,并添加用户:

 groupadd apache-logs usermod -a -G apache-logs user chgrp apache-logs /var/log/httpd chmod g+rx /var/log/httpd 

或者如果您对查看日志的系统上的任何用户感到满意,只需:

 chmod go+rx /var/log/httpd 

无论你做什么,如果升级httpd,它将重置为原始权限。 它不应该改变。

另外,apache可以使用默认权限写入日志的原因是由于Apache以root用户身份打开日志文件。 一旦apache被完全加载,它将把它的用户改成apache,但是会继续打开日志文件。