Laravel Decrypt:ErrorException unserialize():在2个字节的偏移量0处出错

时间:2018-08-09 09:30:32

标签: laravel

我为子域本地化写了package。但是,解密Cookie的工作无处不在。

我的语言环境测试网站正在运行,但是我需要取消安全性才能使用Laravel代客共享。现在,当我再次将其更改为代客保护时,我的网站不再起作用。我收到了ErrorException:

unserialize(): Error at offset 0 of 2 bytes

//Illuminate/Encryption/Encrypter.php
Row 149.  return $unserialize ? unserialize($decrypted) : $decrypted;

我不知道为什么。我没有更改我的app_key,我删除了该页面的所有cookie,但是仍然无法正常运行(并且在过去3周内运行良好)。

如果您查看here或缩短的代码:

 return decrypt(request()->cookie('tongue-locale'));

您看到我正在解密cookie的内容。如果您好奇为什么我需要解密cookie,那是因为中间件“ \ App \ Http \ Middleware \ EncryptCookies :: class”稍后会启动。

有人知道为什么它不起作用吗?

4 个答案:

答案 0 :(得分:3)

我使用以下解决方案解决了该问题:https://laravel.com/docs/5.6/upgrade#upgrade-5.6.30

添加此行: protected static $serialize = true;

app\Http\Middleware\EncryptCookies.php

答案 1 :(得分:2)

我不知道发生了什么,但是我需要将代码更改为:

app('encrypter')->decrypt(request()->cookie(self::COOKIE), false);

如果为“ false”,则反序列化将被忽略。但是,我仍然想知道为什么它不起作用。

如果您翻译此部分

return $unserialize ? unserialize($decrypted) : $decrypted;

变量$ unserialize = true和$ decrypted =“ de”很明显它失败了,但是我想知道为什么以前没有。.

答案 2 :(得分:0)

对我来说,它可以运行下一个工匠命令

php artisan key:generate

答案 3 :(得分:0)

警告!如果您已经加密了数据,就不会将“ php artisan key:generate”设置为“ undecryptable”。