2012-12-30 118 views
2

通过电子邮件获取用户的错误报告令人沮丧。我敢打赌,大多数用户不会向开发者发送错误报告。因此,我想设置,如果用户得到PHP错误代码,我想通过电子邮件自动获取错误报告。Codeigniter,有没有办法自动获取用户错误报告?

有没有办法在PHP或CodeIgniter中获取用户错误报告?

谢谢。

+0

我们在这里谈论什么样的错误? – itachi

回答

1

你可以做这样的事情:

<?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; 

Source

0

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错误,错误日志会。

0

你可以看看CodeIgniter的有关错误文档报告 http://ellislab.com/codeigniter/user-guide/general/errors.html

有一个关于使用error_reporting()函数,也许你可以破解它,做你的电子邮件的东西提。

+1

实际上,'error_reporting'只用于设置错误报告级别。要做电子邮件,你必须使用'set_error_handler' – mbinette

相关问题