Журналы ошибок Apache - как просмотреть их в виде веб-страницы (для внутреннего интрасетевого сервера), если обычно доступен только root?

Журналы ошибок Apache - как просмотреть их в виде веб-страницы (для внутреннего интрасетевого сервера), если обычно доступен только root?

Я хотел бы иметь возможность отображать error_log как веб-страницу, чтобы коллега (без прав root) мог просматривать ее для устранения неполадок в своей разработке PHP.

На моем компьютере с CentOS 5.x журнал ошибок находится по адресу: /var/log/httpd/error_log, а доступ к каталогам возможен только с правами root.

Я бы написал CGI-скрипт для отображения журнала, но поскольку он выполняется в процессе apache, он не является root-процессом, поэтому доступ к файлу журнала невозможен. (Пробовал). Меня озадачивает то, что каким-то образом apache может записывать в него ошибки журнала, даже если содержащиеся в нем каталоги имеют root-доступ.

Как мне достичь своей цели? Или, может быть, вы предложите альтернативу?

решение1

На самом деле, я, вероятно, не буду использовать свой другой ответ в некоторых ситуациях, но я сохраню его для справки.

Если вашему коллеге предоставлен собственный VirtualHost, я бы настроил этот виртуальный хост на вывод журналов в другой каталог, чтобы они видели только ошибки своей системы:

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

В качестве альтернативы, если файлы .htaccess включены, заставьте их просто выводить свои журналы ошибок PHP в нужное им место, например:

/путь/к/корневому/веб-каталогу/.htaccess:

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

решение2

вы можете изменить права доступа к файлу... если нет, вы можете создать задание cron, которое будет запускаться каждую минуту, выполняя rsync из файла журнала Apache в другой файл (где вы можете установить права доступа для чтения), а затем отображать его на веб-странице.

Существуют также способы, с помощью которых вы можете изменить механизм ведения журнала для Apache, это зависит от вашей возможности изменять конфигурацию.

решение3

Я бы изменил права доступа к каталогу /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, но продолжит иметь открытые файлы журналов.

Связанный контент