PHP记录所有抛出的错误

PHP记录所有抛出的错误,php,Php,我想在数据库中记录PHP抛出的所有错误。如何获取变量中的所有错误 在下面的代码中,未声明的$a已经打印出来。但它并没有流行起来 $error = ""; try { echo $a; // not declared } catch(Exception $e) { $error = $e->getMessage(); } 输出 通知不是异常,因此不能在Try{}Catch{}块中捕获它。与警告类似 通常,最好启用错误报告级别,以便它们在开发环境中显示这些错误,这样您就不得

我想在数据库中记录PHP抛出的所有错误。如何获取变量中的所有错误

在下面的代码中,未声明的$a已经打印出来。但它并没有流行起来

$error = "";
try
{
     echo $a; // not declared
}
catch(Exception $e)
{
    $error = $e->getMessage();
}
输出


通知不是异常,因此不能在Try{}Catch{}块中捕获它。与警告类似

通常,最好启用错误报告级别,以便它们在开发环境中显示这些错误,这样您就不得不在编写代码时处理这些问题

但是,要捕获它们并以另一种方式处理它们,您需要设置一个自定义错误处理程序。您可以让自定义错误处理程序仅捕获某些错误

<?php
// set custom handler for NOTICES
// $oldHandler will allow you to reset the handler back to PHP default later 
$oldHandler = set_error_handler('myErrorHandler', E_NOTICE|E_WARNING);

function myErrorHandler($errno, $errstr, $errfile, $errline) {

  // log to DB in here
  // $db->query("INSERT INTO error_log (errno, errstr... ) VALUES (...)");

  // return false to let the error bubble up and get caught by default error handler
  // return false;

  // return true to tell PHP you've dealt with it
  return true;
}

 // YOUR SAMPLe CODE SHOULD NOW CAPTURE THE NOTICE
 $error = "";

 try 
 {
    echo $a; // not declared
 } 
 catch( \Error $e) 
 {
   $error = $e->getMessage();
 }

?>

当您打印$error时,您得到了什么?我想这会有所帮助:您使用了吗?实际上我使用的是cakephp框架。任何方式都可以记录类函数中的错误
<?php
// set custom handler for NOTICES
// $oldHandler will allow you to reset the handler back to PHP default later 
$oldHandler = set_error_handler('myErrorHandler', E_NOTICE|E_WARNING);

function myErrorHandler($errno, $errstr, $errfile, $errline) {

  // log to DB in here
  // $db->query("INSERT INTO error_log (errno, errstr... ) VALUES (...)");

  // return false to let the error bubble up and get caught by default error handler
  // return false;

  // return true to tell PHP you've dealt with it
  return true;
}

 // YOUR SAMPLe CODE SHOULD NOW CAPTURE THE NOTICE
 $error = "";

 try 
 {
    echo $a; // not declared
 } 
 catch( \Error $e) 
 {
   $error = $e->getMessage();
 }

?>