Laravel Mail::queue 错误:闭包序列化失败,即使是最基本的用法
Posted
技术标签:
【中文标题】Laravel Mail::queue 错误:闭包序列化失败,即使是最基本的用法【英文标题】:Laravel Mail::queue error: Serialization of closure failed, even with the most basic usage 【发布时间】:2016-10-19 22:54:48 【问题描述】:我遇到了Mail::queue()
的问题,不知道除了写我自己的Job
来处理排队问题之外还能做些什么来解决它。正如您在下面的屏幕截图中看到的那样,我有一个极小的示例,我正在尝试在artisan tinker
中运行。有人遇到过这个问题并解决了吗?
如果我改用Mail::send()
,这完全可以;
【问题讨论】:
你使用 SuperClosure 吗? 您可以在 php 错误中看到正在使用 SuperClosure,但这不是重点。关键是上面的代码在 Tinker 中不起作用,在实际应用程序中也不起作用。我正在尝试判断这是否是我的某个配置选项,或者这是其他人在默认安装 Laravel 5.2 时遇到的问题。 Laravel 需要,在 laravel/framework/composer.json 中。 你能发布你的 activate.blade.php 文件吗? Activate.blade.php 的内容是“测试”。 【参考方案1】:闭包是不可序列化的。您不能将它们推送到队列中。
Psy Shell v0.8.3 (PHP 7.1.0 — cli) by Justin Hileman
>>> serialize(function());
Exception with message 'Serialization of 'Closure' is not allowed'
【讨论】:
这是一篇较早的帖子,您的回答不适用。在 Laravel 5.2 中,上述代码仍在 5.2 文档中,但它不起作用。Mail::queue('emails.welcome', $data, function ($message) // );
取自文档页面。无论哪种方式,现在大部分都关闭了,因为它有几个旧版本并且整个队列系统已经改变。以上是关于Laravel Mail::queue 错误:闭包序列化失败,即使是最基本的用法的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 无法为序列化准备路由 [api/user]。使用闭包
使用 Mandrill 和 Laravel 发送预定的电子邮件
Laravel 中的 SerializableClosure 错误 - 您的序列化闭包可能已被修改,反序列化是不安全的