Laravel7用户登录后返回500错误 重启服务需重新生成key
问题原因及解决方案
1. 解决每次重启服务需执行php artisan key:generate的问题
这个问题的核心是APP_KEY无法持久化存储:
- 检查项目根目录下的
.env文件权限,确认运行服务的用户拥有该文件的读写权限- Linux/Mac 环境执行命令
chmod 644 .env赋权,执行php artisan key:generate后查看.env文件内的APP_KEY字段是否有更新 - Windows 环境右键点击
.env文件,取消「只读」属性,重新生成 key 后确认字段值已写入
- Linux/Mac 环境执行命令
- 如果你使用 Docker 等容器化环境运行项目,检查容器启动配置是否会覆盖
.env文件,或者是否未将.env所在目录做本地持久化映射,导致每次重启容器.env恢复初始状态
2. 解决登录跳转后500错误的问题
该问题和上面的APP_KEY频繁变动直接相关:
- Laravel 会使用
APP_KEY加密会话、Cookie 等敏感数据,你每次重新生成APP_KEY后,之前已生成的会话、Cookie 都会因为无法解密抛出异常,直接导致跳转后500 - 临时验证方案:每次生成新的
APP_KEY后,清空浏览器站点 Cookie,同时删除项目storage/framework/sessions目录下的所有会话文件,再重新登录即可正常跳转 - 永久修复方案:优先解决
APP_KEY持久化存储的问题,保证服务重启后 key 不会变更,就不会再出现解密失败的500错误
可选代码优化(不影响当前问题修复)
- 你的代码中存在
$request->session()->put('user_password', $password)逻辑,属于明文存储用户密码的高危操作,且无业务必要性,建议直接删除相关代码,Laravel 自带的 Auth 体系已经完整管理了用户登录态,无需自行存储密码 - 登录逻辑中重复调用了3次
Auth::login($tempUser, $remember),属于冗余代码,可删除多余调用
内容的提问来源于stack exchange,提问作者zin-minhtun
相关产品推荐
相关产品推荐

