Apache-2.2

讓 apache 可以讀取 error_log

  • January 31, 2015

設置:CentOS 6.6、Apache 2.2.15、php 5.5.21

我正在建構一個顯示/var/log/httpd/error_log文件內容的 php 腳本。不幸的是,它不起作用。錯誤消息指出:

第 405 行 /var/www/domain.com/tools/server-logs-viewer.php 中的權限被拒絕

第 405 行: $f = fopen($filename, "rb");

我已經 chmoded 0777 文件,只是為了檢查,仍然不行。所以我假設該消息是指文件所有權。日誌文件歸 root:root 所有,而 php 腳本歸 apache:apache 所有。

在不影響錯誤報告過程的情況下,我可以做些什麼來給 apache 足夠的文件讀取權限?

我已經很久沒有在 PHP 中做任何事情了,但是如果沒有進一步的資訊,我會檢查幾個系統配置元素和 php.ini 設置:

日誌文件的路徑

請確保執行 apache 的使用者能夠訪問文件所在的目錄。這意味著它應該對路徑上的目錄具有 r+x 訪問權限。

php.ini 設置

請看一下 php fopen 手冊

  • safe_mode:取決於您使用的版本(似乎已在 5.4.0 中刪除)
  • open_basedir:拒絕打開不在這棵樹中的任何東西。

SELinux、AppArmor

你執行的是 SELinux 還是 AppArmor?儘管有權限,但這可能會阻止 apache 程序訪問文件。

最好的祝福

引用自:https://serverfault.com/questions/663837