捕获所有PHP错误并输入var

时间:2013-10-28 12:47:04

标签: php

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

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

3 个答案:

答案 0 :(得分:2)

您可以使用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变量中。希望有所帮助:)

答案 1 :(得分:1)

您可以捕获关闭错误并将其用于插入数据库:

register_shutdown_function('shutdownFunction');

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

答案 2 :(得分:0)

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

对于语法/解析器错误,你可能运气不好。在这些情况下,脚本本身无法执行,因此根据定义,脚本无法响应错误。对此的最佳防御是测试(最好是自动化的)。你可以做的一件事是set your error logging to be a database instead of a file。但是脚本本身仍无法响应错误。

对于运行时/逻辑错误,这是实现exception handling的地方。可以使用很多东西,但整体结构很简单:

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