捕获所有 PHP 错误并输入一个变量


Catch all PHP errors and put in a var

我有多个php应用程序,当出现一些php错误时,它会记录到Apache日志文件中。

我需要有一个检测脚本中何时发生 php 错误的检测器。因此,当它检测到新的 php 错误时,可以将错误消息放入 var 或保存在数据库中。

您可以使用 PHP 的输出缓冲区将特定代码块中的所有输出存储到变量中。下面是一个示例:

ob_start();
// php code goes here
try{
   // Some code
}catch(Exception $e){
    echo $e->getMessage();
}
$all_output = ob_get_clean();
// Insert the $all_output string into database or log it into a file

在这种情况下,所有输出(如警告)以及在 ob_start 和 ob_get_clean 之间回显的任何其他内容都将存储在 $all_output 变量中。希望对:)有所帮助

您可以捕获关闭错误并使用它来插入数据库:

register_shutdown_function('shutdownFunction');
function shutDownFunction() { 
    $error = error_get_last();
    if ($error['type'] == 1) {
        //do whatever
    } 
}

这基本上归结为两种错误。 语法/解析器错误和运行时/逻辑错误。

对于语法/解析器错误,您可能不走运。 在这些情况下,脚本本身无法执行,因此根据定义,脚本无法响应错误。 对此最好的防御是测试(最好是自动化的)。 您可以做的一件事是将错误日志记录设置为数据库而不是文件。 但是脚本本身仍然无法响应错误。

对于运行时/逻辑错误,这就是异常处理的实践。 有很多内容可以进入其中,但整体结构非常简单:

try {
    // perform some operation
} catch (Exception $e) {
    // an error occurred, the details of which are in $e
    // meaningfully respond to it
}