Laravel 中的 SerializableClosure 错误 - 您的序列化闭包可能已被修改,反序列化是不安全的
Posted
技术标签:
【中文标题】Laravel 中的 SerializableClosure 错误 - 您的序列化闭包可能已被修改,反序列化是不安全的【英文标题】:SerializableClosure error in Laravel - Your serialized closure might have been modified and it's unsafe to be unserialized 【发布时间】:2021-01-15 17:18:10 【问题描述】:我在使用 laravel v8 作为网站的域中遇到此错误。
它在index file
的第 52 行显示错误:
以前我的 .env 文件没有读取。一旦我修复了这个错误,我现在就得到了这个。 请帮我解决这个错误。
【问题讨论】:
你如何解决这个问题?我遇到了同样的问题 你是如何解决这个问题的? @theodory 这是因为 .env 文件中的 App_key。因此,您可以使用 php artisan key:generate 生成密钥。如果它不起作用,您可以在 cmd 中尝试以下代码:composer run post-root-package-install 谢谢@CherylRarewings 我重新生成了密钥,一切都已修复。 【参考方案1】:为我解决的问题是在我的项目文件夹中运行以下内容:
php artisan route:clear
我也在上述命令之前运行了以下命令,但错误仍然存在。只有当我执行上述操作时它才消失。作为参考,这里是我之前运行的命令:
php artisan cache:clear
php artisan config:clear
php artisan view:clear
npm run dev
php artisan key:generate
我还想指出,我正在使用以下堆栈:
Laravel v8
Jetstream
Inertia
Vue2
【讨论】:
【参考方案2】:由于您的.env
文件中的APP_KEY
值发生更改,可能会出现此问题。
APP_KEY
用于安全数据传输,Laravel 建议将其设置为随机字符串。
此
加密 cookie。 为已签名的 URL 和排队的闭包创建签名。 使用 encrypt() 和 decrypt() 帮助程序加密值。APP_KEY
用于
如果您使用与加密时相同的key
,则可以解密加密的数据。
因此,如果可能,请查找备份 .env
文件并使用相同的 APP_KEY
来解决它。
【讨论】:
如果我想换一个新密钥怎么办?无论如何要清除以前的缓存内容? 加密数据也可以存储在缓存或数据库中。如果浓度是这样的,您可以删除它,您可以轻松地做到这一点,但有时它可能是您的用户使用的秘密。在这种情况下,您需要从旧加密迁移到新加密。【参考方案3】:In vendor → .env,
将APP_URL
更改为http://localhost
。
【讨论】:
【参考方案4】:当我在生产中用开发中的 .env 替换我的 .env 文件时,这发生在我身上。它失败了,因为它有一个不同的 APP_KEY,所以我不得不在生产中生成一个新的 APP_KEY。
运行以下命令后解决: php工匠密钥:生成 php工匠配置:清除 php工匠路线:清除 php工匠视图:清除 php工匠配置:缓存 php工匠路线:缓存 php工匠视图:缓存
也许不需要清除视图和路线。
【讨论】:
以上是关于Laravel 中的 SerializableClosure 错误 - 您的序列化闭包可能已被修改,反序列化是不安全的的主要内容,如果未能解决你的问题,请参考以下文章
如何将控制器中的 Laravel 4.2 beforeFilter 转换为 Laravel 5.2 中的自定义中间件
1+X web中级 Laravel学习笔记——Laravel中的路由