%2C%20%D0%B5%D1%81%D0%BB%D0%B8%20%D0%BE%D0%B1%D1%8B%D1%87%D0%BD%D0%BE%20%D0%B4%D0%BE%D1%81%D1%82%D1%83%D0%BF%D0%B5%D0%BD%20%D1%82%D0%BE%D0%BB%D1%8C%D0%BA%D0%BE%20root%3F.png)
Я хотел бы иметь возможность отображать 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, но продолжит иметь открытые файлы журналов.