gpt4 book ai didi

php - 如何在 zend 框架中记录数据库错误

转载 作者:行者123 更新时间:2023-12-03 08:33:34 25 4
gpt4 key购买 nike

我正在为我的项目使用 zend 框架 1.12。我想捕获所有类型的 fatal error 并将它们发送到电子邮件地址以进行快速修复。为此,我在 Bootstrap.php 文件中编写了下面提到的代码。

protected function _initFatalErrorCatcher()
{
register_shutdown_function(array($this, 'errorlogHandler'));
}

public function errorlogHandler()
{
$e = error_get_last();

if (!is_null($e)) { //fatal error

$msg = 'Fatal error: ' . $e['message'];
$msg .= ' in' . $e['file'];
$msg .= ' on line: ' . $e['line'];

$mail = new Zend_Mail('utf-8');
$mail->setBodyHtml($msg);
$mail->setFrom('zzz@z.com');
$mail->addTo('yyy@y.com');
$mail->setSubject('check this error');

$mail->send();
}
}

使用上面的代码,我可以向电子邮件发送除数据库连接相关错误和查询相关错误之外的 fatal error 。我按照 Catch Zend PDO Exception 的说明进行操作也是,但我相信我错过了一些东西,因为它不起作用。

对此的任何帮助将不胜感激。

编辑:

我还使用 Zend_Log 将错误日志写入日志文件。但是,使用这个我找不到写 fatal error 的方法。代码如下。
$writer = new Zend_Log_Writer_Stream(APPLICATION_PATH  . "/../data/log-file.log");
$errors = $this->_getParam('error_handler');
$exception = $errors->exception;

$log = new Zend_Log($writer);
$log->debug($exception->getMessage() . "\n" . $exception->getTraceAsString());

数据库连接相关问题的场景:

如果主机名、数据库名或用户名有任何错误,它会在浏览器中显示一个 fatal error ,如下所示。但它没有被 register_shutdown_function() 或 Zend_Log() 检测到。
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000] [1044] Access denied for user 'AAAA'@'%' to database 'BBBB'' in /var/www/project_name/library/Zend/Db/Adapter/Pdo/Abstract.php on line 144 PDOException: SQLSTATE[42000] [1044] Access denied for user 'AAAA'@'%' to database 'BBBB' in /var/www/project_name/library/Zend/Db/Adapter/Pdo/Abstract.php on line 129

最佳答案

帖子here显示一个例子。基本使用set_error_handler遇到错误时让 php 抛出异常。此示例来自链接:

<?php
function exception_error_handler($errno, $errstr, $errfile, $errline ) {
throw new ErrorException($errstr, $errno, 0, $errfile, $errline);
}
set_error_handler("exception_error_handler");

/* Trigger exception */
strpos();
?>

希望这可以帮助

关于php - 如何在 zend 框架中记录数据库错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16521767/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com