Я хотел бы иметь возможность отображать error_log как веб-страницу, чтобы коллега (без корневого доступа) мог просматривать это для устранения неполадок при разработке PHP.
На моем компьютере с CentOS 5.x журнал ошибок находится по адресу: / var / log / httpd / error_log, а каталоги имеют только root-доступ.
Я бы написал сценарий CGI для отображения журнала, но поскольку он выполняется в процессе apache, это не root, поэтому к файлу журнала невозможно получить доступ. (Пробовал). Что меня озадачивает, так это то, что каким-то образом apache может писать в него для регистрации ошибок, даже если содержащиеся каталоги являются корневыми.
Как я мог достичь своей цели? Или вы можете предложить альтернативу, пожалуйста?
вы можете изменить разрешения для файла ... если нет, у вас может быть задание cron, которое запускается каждую минуту, выполняя rsync из файла журнала apache в другой файл (где вы можете установить разрешения на чтение), а затем отображать его в страница интернета.
также есть способы изменить механизм ведения журнала для apache, это зависит от вашей способности изменять конфигурацию.
На самом деле, я бы, вероятно, не использовал свой другой ответ в некоторых ситуациях, но я сохраню его здесь для справки.
Если бы вашему коллеге был предоставлен собственный 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
Я бы изменил разрешения для каталога / 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, но по-прежнему будет иметь открытые файлы журнала.