gpt4 book ai didi

mysql - 从 ZendFramework 获取完整的堆栈跟踪

转载 作者:行者123 更新时间:2023-11-29 05:31:49 27 4
gpt4 key购买 nike

我有一个使用 ZendFramework 的非常大的 Web 应用程序。某处的SQL语句似乎有语法错误(很多东西是自动生成的),但记录的错误非常无用(项目信息已删除)

Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near [...] in [...]/ZendFramework/Zend/Db/Statement/Pdo.php:228
Stack trace:
#0 [...]/ZendFramework/Zend/Db/Statement/Pdo.php(228): PDOStatement->execute(Array)
#1 [...]/ZendFramework/Zend/Db/Statement.php(300): Zend_Db_Statement_Pdo->_execute(Array)
#2 [...]/ZendFramework/Zend/Db/Adapter/Abstract.php(479): Zend_Db_Statement->execute(Array)
#3 [...]/ZendFramework/Zend/Db/Adapter/ in [...]/ZendFramework/Zend/Db/Statement/Pdo.php on line 234

此堆栈跟踪仅包含 Zend Framework 内部的引用,而实际的调用者(最有可能出现语法错误的地方)无处可见。

如何让 Zend Framework 在发生错误时为我提供完整的堆栈跟踪?

最佳答案

这些异常应该由您的 ErrorController()(或者您拥有的作为 ErrorController 传递的任何东西)记录,通常在默认模块(application/ Controller /ErrorController.php)。如果是这种情况,更改日志记录机制应该非常简单。

可能只需要做一点实验就可以找出哪个 Exception()获取所需输出所需的方法。

[编辑]

我应该注意到,如果您使用默认的错误设置, View 将是更新的简单位置:

<!-- application/views/scripts/error/error.phtml -->
<html>
<body>
<h1>An error occurred</h1>
<h2><?php echo $this->message ?></h2>
<?php if (isset($this->exception)): ?>
<h3>Exception information:</h3>
<p>
<b>Message:</b> <?php echo $this->exception->getMessage() ?>
</p>
<h3>Stack trace:</h3>
<pre><?php echo $this->exception->getTraceAsString() ?>
<!-- add full Trace info -->
<pre><?php echo $this->exception->getTrace() ?></pre>
</pre>
<h3>Request Parameters:</h3>
<pre><?php echo $this->escape(var_export($this->request->getParams(), true)) ?>
</pre>
<?php endif ?>
</body>
</html>

关于mysql - 从 ZendFramework 获取完整的堆栈跟踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14053592/

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