2016-03-01 54 views
4

在這麼多年來,我第一個PHP腳本,我想記錄一個錯誤:PHP無法寫入錯誤日誌 - 權限被拒絕

error_log("my error message", 3, $error_log); 

我得到的一般Apache的錯誤錯誤日誌:

PHP Warning: error_log(/var/log/apache2/my_php_errors.log): failed to open stream: Permission denied in /var/www/html/blahblah/my_script.php on line 88

這是我已經檢查並嘗試:

  • 創建$error_log用相同的所有權(root.adm)和燙髮issions(640)作爲Apache錯誤日誌。
  • 將所有者更改爲www-data,這是PHP正在運行的用戶。
  • log_errorsOn
  • open_basedir沒有設置。
  • 使用PHP 5.5.x,所以安全模式不存在。

我錯過了什麼?

編輯:它能夠寫入一般的Apache錯誤日誌。神祕的原因是它無法以相同的所有權和權限寫入同一目錄中的另一個文件。

編輯2:另一個開發人員告訴我,這對他的WAMP有效,所以它是我的LAMP堆棧或配置特有的東西。

+2

我們需要更多關於'$ error_log'變量的信息。它是日誌文件的目的地。對於默認日誌文件保留爲空。例如,它位於Web根目錄之內還是之外。如果在外面,你可能想檢查ini中允許的包含路徑。 – Xorifelse

+0

聯繫您的服務器管理員。 – frosty

+1

嘗試使用777來編寫PHP需要寫入的文件,並查看它是否可行 – Machavity

回答

0

我有同樣的問題。 https://serverfault.com/questions/831444/php-error-log-per-vhost/831666#831666

touch /path/to/php_error.log 
chown www-data:www-data php_error.log 
chmod 755 php_error.log 

感謝領導給我的答案!

+0

這似乎不像它會在我的情況下工作,因爲我試圖將所有者設置爲「www-data」和更廣泛的'777'的權限。不幸的是,我無法再訪問我遇到這個問題的環境。 –

+0

PHP(或apache2)需要能夠在目錄中創建和寫入文件。我把日誌文件放在html目錄中沒有問題,但我不想在public viewable目錄中使用error_log文件...另外,我不想擴大虛擬服務器根目錄的範圍..所以我創建了根文件(觸摸),然後在文件上爲它設置更廣泛的權限。 –