2013-02-23 51 views
4

我想獲取警告和錯誤消息到php $變量,所以我將它們保存到我的數據庫。PHP會收到警告和錯誤消息?

例如,當存在什麼樣的錯誤,報警或類似:

Parse error: syntax error, unexpected T_VARIABLE in /example.php(136) on line 9 
Warning: [...] 

我想,讓他們到變量$ ERROR_CODE

如何做到這一點?

+0

嘗試從'error_log'文件的讀取,並在數據庫中寫入。 – Achrome 2013-02-23 03:49:14

+0

如果你想將它保存到一個變量中,你應該看看這個:http://us3.php.net/manual/en/reserved.variables.phperrormsg.php – 2013-02-23 03:50:03

+0

你不能捕捉到分析錯誤,除非他們'重新寫入你包含或需要的腳本。 – 2013-02-23 03:57:16

回答

5

對於剛剛登陸他們的簡單情況:

set_error_handler(function($errno, $errstr, $errfile, $errline) use ($db) { 
    // log in database using $db->query() 
}); 

而不是僅僅記錄他們到你的數據庫(有可能你會不會看他們一會後)你也可以讓那些警告,通知等產生異常:

function exception_error_handler($errno, $errstr, $errfile, $errline) 
{ 
    if (error_reporting()) { // skip errors that were muffled 
     throw new ErrorException($errstr, $errno, 0, $errfile, $errline); 
    } 
} 

set_error_handler("exception_error_handler"); 

來源:ErrorException

例外無線會有更嚴重的副作用,所以你應該有一個exception handler來防止未捕獲的異常導致死亡的白頁。

3

查找到set_error_handler()

設置一個用戶函數(error_handler)的腳本來處理錯誤。

該功能可用於在應用程序運行時定義你自己的錯誤處理 方式,例如在你需要做 清理的數據/文件時嚴重錯誤發生時,或者當你需要 到觸發在某些情況下出錯(使用trigger_error())。

2

我使用error_get_last();,直到我找到一個更好的解決方案

$lastError = error_get_last(); 
echo $lastError ? "Error: ".$lastError["message"]." on line ".$lastError["line"] : ""; 
// Save to db 
+0

這隻會給你最後的錯誤,並不是所有的錯誤。 – 2013-02-23 04:38:29