我的代码中有一个自定义的Exception处理程序(以前可以正常工作),直到昨天突然我看到此错误:
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.
我试图了解是什么导致“不允许关闭序列化”异常.
谢谢!