【发布时间】:2014-04-21 11:22:28
【问题描述】:
我的代码中有一个自定义异常处理程序(以前可以正常工作),直到昨天我突然看到这个错误:
PHP Fatal error: Uncaught exception 'Exception' with message 'Serialization of 'Closure' is not allowed' in /raid0/nginx/www/voiceportal/lib/logutils.php:34 Stack trace:
#0 /raid0/nginx/www/voiceportal/lib/logutils.php(34): serialize(Array)
#1 [internal function]: custom_exception_handler(Object(AMQPConnectionException))
#2 {main}
我读到如果尝试序列化匿名函数可能会导致这种情况,但这就是我抛出错误的原因:
//logutils.php
function custom_exception_handler($exception) {
$trace_id = uniqid();
$trace = serialize(array('trace_id' => $trace_id, 'trace' => $exception->getTrace()));
...
}
不确定是否是由于尝试序列化 getTrace() 引起的,但如果我没记错的话,它以前可以工作。
最初的异常是(如跟踪所示)AMQPConnectionException。
我正在尝试了解导致 'Serialization of Closure not allowed' 异常的原因。
谢谢!
【问题讨论】:
-
$exception->getTrace()的返回值是什么? -
不知道主代码发生了什么异常,所以不知道。
-
我不明白你的问题。您必须提供更多详细信息
-
原来的异常是 AMQPConnectionException。问题中添加了更多详细信息。
-
您必须显示
custom_exception_handler的完整正文以及捕获此异常的代码
标签: php exception closures amqp