2016-04-28 142 views
1

我的Linux服務器在Apache2上運行PHP 7作爲CGI。在php.ini將錯誤寫入錯誤日誌

error_log = /var/log/apache2/php.log 

現在,我有兩個問題:

1)所有PHP錯誤去/var/log/apache2/error.log而不是php.log。我編輯了正確的php.ini,因爲ini_get('error_log')返回PHP中的php.log的完整路徑。

2)當我嘗試在PHP中打開這些文件中的任何一個時,我得到權限被拒絕。我有chmod'd這兩個文件到777,但PHP仍然無法訪問它們。

服務器已多次重新啓動,因此配置更改適用。我的Apache配置是這樣的:

ErrorLog ${APACHE_LOG_DIR}/error.log 

ScriptAlias /local-bin /usr/bin 
AddHandler application/x-httpd-php7 php 
Action application/x-httpd-php7 /local-bin/php-cgi7.0 
<Directory "/usr/bin"> 
    Require all granted 
    AllowOverride All 
</Directory> 

如何將PHP錯誤重定向到正確的文件,並使其可讀取PHP?提前致謝!

+0

將'ErrorLog $ {APACHE_LOG_DIR}/error.log'更改爲'ErrorLog $ {APACHE_LOG_DIR}/php.log'? – Halcyon

+0

chmodding這些文件通常是不夠的。您必須具有訪問所有父/容器目錄的權限。如果它位於鎖定的保險庫內,授予對文件的訪問權限毫無意義。日誌文件是在apache仍以root身份運行時創建的,因此這些文件由root擁有。那麼一旦你嘗試訪問它們在PHP中,Apache不再是根,並且PHP沒有文件的權利。 –

+0

好的,回到基礎!這確實是父目錄的權限問題。現在我感到尷尬:) – Aleksiv95

回答

1

您需要更改owner和日誌目錄和日誌文件/秒的group(如果已經存在/秒),以www-data

sudo chown -R www-data:www-data /path/to/log/directory 

不要更改目錄權限777,因爲它可能導致安全問題,請改爲使用775。對於日誌文件使用664

您可能還需要你的系統用戶添加到組www-data如果不是已經是會員(使用groups命令來檢查您現有的組),即以使更改生效後,需要重新啓動系統:

sudo adduser user www-data #change 'user' to your 
+0

謝謝!你知道,當你來自Windows世界並熟悉NTFS時,很容易發現這類東西。我忘記了每個父目錄需要執行權限才能訪問該文件。所以最終我創建了'/ var/log/php','chown'把它改爲'root:www-data'和'chmod''d到'750'。然後我可以在該文件夾中使用'php.log'。 PS。我暫時將權限更改爲「777」,不要擔心:) – Aleksiv95