Apache 錯誤日誌 - 通常只進行 root 訪問時如何查看網頁(對於內部 Intranet 伺服器)?

Apache 錯誤日誌 - 通常只進行 root 訪問時如何查看網頁(對於內部 Intranet 伺服器)?

我希望能夠將 error_log 顯示為網頁,以便同事(沒有 root 存取權限)可以查看此日誌以對其 PHP 開發進行故障排除。

在我的 CentOS 5.x 機器上,錯誤日誌位於:/var/log/httpd/error_log,而這些目錄僅具有 root 存取權。

我會編寫一個 CGI 腳本來顯示日誌,但由於它在 apache 進程中運行,因此它不是 root,因此無法存取日誌檔案。 (嘗試過)。讓我困惑的是,apache 可以以某種方式寫入它來記錄錯誤,即使包含的目錄是 root 存取權。

我怎樣才能實現我的目標?或者你能建議一個替代方案嗎?

答案1

實際上,在某些情況下我可能不會使用我的其他答案,但我會保留它以供參考。

如果您的同事擁有自己的虛擬主機,我會將該虛擬主機設定為將其日誌輸出到不同的目錄,這樣他們只會看到系統錯誤:

<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

您可以更改檔案的權限...如果沒有,您可以有一個每分鐘運行一次的 cron 作業,從 apache 日誌檔案進行 rsync 到另一個檔案(您可以在其中設定讀取權限),然後將其顯示在網頁。

還有一些方法可以更改 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,但將繼續打開日誌檔案。

相關內容