php - 在数据库中存储 PHP 异常对象

标签 php exception

我需要在 mysql 列中存储 PHP 异常对象。它用于离线错误记录系统。通常我只会 serialize() Exception 对象并完成它,但有一半的时间,当尝试这样做时,我会收到以下错误:

Fatal error: Uncaught exception 'Exception' with message 'Serialization of 'Closure' is not allowed'

我不知道如何让它持续工作。我将非常感谢任何能够解决此问题的人。

谢谢。

最佳答案

要记录的异常对象包含 Closure 的实例类,anonymous functions and closure 的 PHP 实现。显然匿名函数无法序列化。

您需要调查您的异常类并查看其中是否有任何一个应该包含它们。通常,异常类不应将匿名函数作为属性。

这会重现与您的情况相同的错误消息:

$exception = new Exception('BOO');
$anonymousFunction = function() { echo 'blah'; };
$exception->anonymousFunction = $anonymousFunction;
serialize($exception);

因此,深入研究您的代码、框架的代码、库的代码,并尝试找出哪个异常类确实具有匿名函数作为类属性、谁分配了它们、为什么 - 然后您应该能够创建一个它的特殊情况。

希望这有帮助。

关于php - 在数据库中存储 PHP 异常对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9747813/

相关文章:

phpactiverecord - 显示生成的查询?

php - 无法在 Zend Framework Controller 插件的 postDispatch() 中的 viewRenderer 上调用 setNoRender()

php - mock :检查参数至少传递了一次?

java - 修复 Android 内存不足问题

c# - 在 C# 构造函数中处理损坏的输入数据的最合适方法是什么?

Python 用户定义的异常来处理特定的 OSError 代码

swift - 错误 : execution was interrupted, 原因 : breakpoint 1. 2. Xcode 7.1、Swift

php - ajax 弹出窗口上的提交按钮不起作用

java - Spring boot应用程序中的自定义异常失败

php - 使用 Jquery 更新 mysql 数据库中的复选框和文本区域值