我有多个 php 应用程序,当出现一些 php 错误时,它会记录到 Apache 日志文件中。
我需要有一个检测器来检测脚本中何时发生 php 错误。因此,当它检测到新的 php 错误时,可以将错误消息放入 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
}