[英]PHP error_log errors to MySQL
在之前的一張票中,我詢問了在 MySQL 中記錄 PHP 錯誤的問題,這給了我:
function myErrorHandler($errno, $errstr, $errfile, $errline)
{
// mysql connect etc here...
$sql = "INSERT INTO `error_log` SET
`number` = ".mysql_real_escape_string($errno).",
`string` = ".mysql_real_escape_string($errstr).",
`file` = ".mysql_real_escape_string($errfile).",
`line` = ".mysql_real_escape_string($errline);
mysql_query($sql);
// Don't execute PHP internal error handler
return true;
}
// set to the user defined error handler
$new_error_handler = set_error_handler("myErrorHandler");
我可以完成這項工作,但前提是它是這樣觸發的:
trigger_error("message here");
但是,我還希望為所有錯誤調用錯誤處理程序,例如語法錯誤,例如:
echo "foo;
但是這些錯誤只是輸出到屏幕上,我做錯了什么?
您只能使用自定義錯誤處理程序處理運行時錯誤。 您的示例中的echo "foo
錯誤在解析(即讀入)源代碼時發生。由於 PHP 無法完全解析代碼,因此它也無法在此錯誤上運行您的錯誤處理程序。
如果你被迫測試語法是否正確,你可以使用 php_check_syntax 函數,帶有文件名參數PHP 手冊 php_check_syntax
php_check_syntax 還提供了第二個參數,在使用時會被錯誤字符串填充,據我所知
這確實是一種糟糕的錯誤記錄方式
讓我們以您的代碼為例。 它會引發一個你永遠不會看到的 MySQL 錯誤(因為查詢的格式不正確)。 以及發生任何其他錯誤。 這就是我要說的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.