2011-02-05 27 views
3

我想在具有調試= 0。然而CakePHP的網站登錄PHP錯誤,即使我打開錯誤日誌,就像這樣:當調試爲0時,如何使用CakePHP記錄php錯誤?

error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED 
log_errors = On 

它不記錄錯誤。

的問題是,即使對於應引起CakePHP的環境沒有完全加載解析錯誤(我認爲),但它仍然塊被記錄的錯誤。如果我將調試設置爲3,它將記錄到文件沒有問題。

我使用CakePHP 1.2。我知道這在1.3中顯然變得更容易,但我還沒有準備好升級。

回答

0

定義( 'LOG_ERROR',2);在core.php中

+0

「定義使用log()函數時的默認錯誤類型。」他需要明確記錄狀態。 – Leo

+0

蛋糕重載PHP的錯誤日誌記錄,並在tmp /文件夾中。我相信這是通過CakeLog類https://github.com/cakephp/cakephp/blob/master/cake/libs/cake_log.php#L243 – dogmatic69

+1

沒有做,這不是記錄到或的debug.log時error.log中調試是0.(雖然我可以確認這些文件存在,並且裏面有日誌。) – Justin

0

PHP應該錯誤記錄到自己的日誌文件,不管是什麼CakePHP是做什麼。

查看/etc/php.ini文件(或任何你的生活),並搜索error_log。這將向您顯示PHP日誌駐留在您的系統上的位置。

+1

YAH,這不起作用。當我將調試設置爲3時,它會記錄到我在PHP.ini中指定的文件。當調試爲0時,它不會。我可以重現這種行爲。 – Justin

2

另一種方式來跟蹤和記錄的錯誤都會被使用Referee plugin,因爲它提供了一種隨意記錄和捕獲所有(包括致命)exection期間發生的錯誤。

+0

有趣。應該工作,除了它需要1.3。感謝分享。 – Justin

-1

有時候,原因可能會非常不同。例如,您正在使用的框架可能有其自己的內部緩存模塊,可以在繼續嘗試時將值保存在緩衝區中。檢查是否正在生成重複副本。通常這些文件將被命名爲filename.ext.r123等等。

+0

這些將是框架自己的錯誤消息。框架不控制PHP錯誤消息。 – Lauri

0

有在CakePHP中1.2-1.3的錯誤,其中PHP錯誤/警告在視圖代碼調試被禁用時抑制。

在文件蛋糕/庫/視圖/上線#view.php 664讀取

@include ($___viewFn); 

但@指令禁止的錯誤對整個視圖處理程序。相反,它應該是:

include ($___viewFn); 

它允許在視圖代碼中生成PHP錯誤/警告並隨後記錄。一旦我改變了這一點,並在core.php中有正確的日誌設置,我終於能夠在生產中獲得完整的日誌。

+0

嗨...我試圖調試一箇舊的Cake 1.2項目,並且似乎無法讓日誌記錄工作,即使您改變了你的建議。您是否必須對core.php進行其他更改? –

相關問題