Laravel 中的 SerializableClosure 错误 - 您的序列化闭包可能已被修改,反序列化是不安全的

SerializableClosure error in Laravel - Your serialized closure might have been modified and it's unsafe to be unserialized

我在我的网站使用 laravel v8 的域中收到此错误。

它在 index file 的第 52 行显示错误:

之前我的 .env 文件无法读取。一旦我修复了那个错误,我现在就得到了这个错误。 请帮我解决这个错误。

此问题可能是由于 .env 文件中的 APP_KEY 值发生变化所致。

APP_KEY 用于安全数据传输,Laravel 建议通过将其设置为随机字符串来做到这一点。

This APP_KEY is used for

  • Encrypting cookies.
  • Creating the signature for signed URLs and queued closures.
  • Encrypting values using the encrypt() and decrypt() helpers.

如果您使用与加密时相同的key,则可以解密加密数据。

因此,如果可能,寻找备份 .env 文件并使用相同的 APP_KEY 来解决它。

为我解决的是 运行 我的项目文件夹中的以下内容:

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

In vendor → .env,

APP_URL 更改为 http://localhost

当我用开发中的 .env 替换生产中的 .env 文件时,这发生在我身上。它失败了,因为它有一个不同的 APP_KEY,所以我不得不在生产环境中生成一个新的 APP_KEY。

在 运行 这些命令后解决了:

php artisan key:generate
php artisan config:cache
php artisan route:cache
php artisan view:cache

也许没有必要清除视图和路由。