一緒に仕事をしている同僚から以下のエラーが出て何も操作できなくなったと連絡があり、対処を見つけるまで少し苦労したので備忘録として残します。
Illuminate\Contracts\Encryption\DecryptException
The MAC is invalid.
Laravelでは環境変数に APP_KEY
という値が存在し、 php artisan key:generate
を実行することで更新されます。この値はセッションやクッキー等の複合に使用されるようで、その際にエラーが起きているものと思います。
「おそらく」と書いたのは、同僚が APP_KEY
を更新した覚えがないと言っているからです。
このときはVSCodeのdevcontainerを試したり色々していたので、事故的に消えたか変更になったのではないかと思っています。(もちろん他の原因だった可能性もあるのですが…)
$ php artisan cache:clear
私達の環境ではキャッシュクリアで直りました。
ブラウザのcookieを消したら直るとか色々情報は出てきたのですが、検証したところこれだけで大丈夫そうでした。
調べていると、 APP_KEY
を変更するとパスワードの認証が出来なくなる。という情報が散見されたのですが、そんな事はありません。
Laravel Authのパスワードの格納はpassword_hash関数によって実装されており、APP_KEY
をsaltやpepperに使っているわけではありません。
しかしながら APP_KEY
を更新してしまうとセッションやパスワードリセットトークン等が無効になってしまう様なので、むやみに更新しないに越したことはないですね。