2013-02-11 47 views
4

我使用笨,我已經添加了以下行到我的index.php:PHP的display_errors = 0不受尊重

error_reporting(E_ALL^E_NOTICE); 
ini_set('display_errors', 0); 
ini_set('log_errors', 1); 
ini_set('error_log', $_SERVER['DOCUMENT_ROOT'] . '/php_errors.log'); 

出於某種原因,然而,PHP總是反正顯示警告/錯誤,而不是在可寫目錄中創建日誌。我知道上面的代碼被擊中,因爲如果我刪除「^ E_NOTICES」部分並重新提交,我會看到大量的通知。我也在上面的代碼之後拋出了一個die()語句來驗證它是否被命中。最後,我通過整個代碼庫grepped來驗證「display_errors」在代碼後面沒有使用,覆蓋我的值爲0.

是否還有其他可能導致我無法停止顯示錯誤的其他內容?

+1

檢查您的php.ini設置您的設置是「PHP_INI_USER」還是「PHP_INI_ALL」。否則,您無法在腳本中更改它們。 – migg 2013-02-11 21:59:10

+0

該文檔說'ini_set'的兩個參數必須是字符串,第二個參數是一個整數。我不知道它是否重要,但你可以嘗試在0附近加引號。 – kba 2013-02-11 21:59:22

+0

@migg我會在正確的軌道上打賭你,但我在php.ini中找不到像這樣的東西。你知道它是什麼特定屬性嗎? – Anthony 2013-02-11 22:13:35

回答

0

您應該在CodeIgniter源代碼中搜索「set_error_handler」。它看起來像他們的錯誤處理程序尊重error_reporting設置,但不是display_errors設置,這是一個常見的錯誤。另請參閱:Does a custom PHP error handler respect PHP configuration?

+0

找到了 - 謝謝! – Anthony 2013-02-12 17:14:12