通過電子郵件獲取用戶的錯誤報告令人沮喪。我敢打賭,大多數用戶不會向開發者發送錯誤報告。因此,我想設置,如果用戶得到PHP錯誤代碼,我想通過電子郵件自動獲取錯誤報告。Codeigniter,有沒有辦法自動獲取用戶錯誤報告?
有沒有辦法在PHP或CodeIgniter中獲取用戶錯誤報告?
謝謝。
通過電子郵件獲取用戶的錯誤報告令人沮喪。我敢打賭,大多數用戶不會向開發者發送錯誤報告。因此,我想設置,如果用戶得到PHP錯誤代碼,我想通過電子郵件自動獲取錯誤報告。Codeigniter,有沒有辦法自動獲取用戶錯誤報告?
有沒有辦法在PHP或CodeIgniter中獲取用戶錯誤報告?
謝謝。
你可以做這樣的事情:
<?php
// Our custom error handler
function email_error_handler($number, $message, $file, $line, $vars)
{
$email = "
<p>An error ($number) occurred on line
<strong>$line</strong> and in the <strong>file: $file.</strong>
<p> $message </p>";
$email .= "<pre>" . print_r($vars, 1) . "</pre>";
$headers = 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
// Email the error to someone...
error_log($email, 1, '[email protected]', $headers);
// Make sure that you decide how to respond to errors (on the user's side)
// Either echo an error message, or kill the entire project. Up to you...
// The code below ensures that we only "die" if the error was more than
// just a NOTICE.
if (($number !== E_NOTICE) && ($number < 2048)) {
die("There was an error. Please try again later.");
}
}
// We should use our custom function to handle errors.
set_error_handler('email_error_handler');
// Trigger an error... (var doesn't exist)
echo $somevarthatdoesnotexist;
PHP日誌通常Apache的錯誤日誌(如果你使用Apache),這通常是在/var/log/httpd/error_log.
CodeIgniter的如果在config.php中啓用,錯誤日誌默認設置爲日誌記錄到您的application/log/date.php
(其中日期是今天的日期)。
如果您願意,您可以設置一個cron,每隔一小時發送一封電子郵件給您(或兩個)文件中的新更改。或者您可以使用PHP中的set_error_handler
函數創建您自己的PHP錯誤處理程序。
編輯:mbinette已經粘貼了一個使用PHP的set_error_handler
函數的好例子。一個警告,這不會讓你知道致命的500錯誤,錯誤日誌會。
你可以看看CodeIgniter的有關錯誤文檔報告 http://ellislab.com/codeigniter/user-guide/general/errors.html
有一個關於使用error_reporting()函數,也許你可以破解它,做你的電子郵件的東西提。
實際上,'error_reporting'只用於設置錯誤報告級別。要做電子郵件,你必須使用'set_error_handler' – mbinette
我們在這裏談論什麼樣的錯誤? – itachi