Apache エラー ログ - 通常はルート アクセスのみの場合、Web ページ (内部イントラネット サーバー用) として表示するにはどうすればよいですか?

Apache エラー ログ - 通常はルート アクセスのみの場合、Web ページ (内部イントラネット サーバー用) として表示するにはどうすればよいですか?

error_log を Web ページとして表示できるようにして、同僚 (ルート アクセス権なし) がこれを参照して PHP 開発のトラブルシューティングを行えるようにしたいと考えています。

私の CentOS 5.x マシンでは、エラー ログは /var/log/httpd/error_log にあり、ディレクトリはルート アクセスのみです。

ログを表示するための CGI スクリプトを記述しますが、これは Apache プロセスで実行されるため、ルートではないため、ログ ファイルにアクセスできません。(試しました)。私を困惑させるのは、含まれているディレクトリがルート アクセスであるにもかかわらず、Apache が何らかの方法でログに書き込んでエラーをログに記録できることです。

どうすれば目標を達成できるでしょうか? あるいは、別の方法を提案していただけますか?

答え1

実際のところ、他の回答は状況によっては使用しないかもしれませんが、参考のために残しておきます。

同僚に独自の 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

答え2

ファイルの権限を変更できます...そうでない場合は、Apache ログ ファイルから別のファイル (読み取り権限を設定できるファイル) に rsync を毎分実行する cron ジョブを作成して、それを Web ページに表示することができます。

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 が完全にロードされると、ユーザーは Apache に変更されますが、ログ ファイルは開いたままになります。

関連情報