Laravel后台登录报错:Trying to access array offset on value of type null
解决Laravel后台登录时「Trying to access array offset on value of type null」错误
问题分析
这个错误的核心是代码尝试对一个null值进行数组下标访问,比如你提供的代码截图里的行,某个变量被当成数组使用,但实际该变量的值是null。切换PHP7.3后问题依旧,说明不是PHP版本兼容问题(PHP7.4+对这类错误的触发更严格,但7.3同样会报错),而是代码逻辑本身存在空值未处理的情况。
修复步骤
定位报错代码行
找到触发错误的具体代码,先确认变量为null的原因:- 如果是用户查询返回空:登录时根据账号查询用户,数据库无匹配记录,导致
$user = User::where(...) ->first()返回null,后续直接用$user['xxx']访问触发错误。 - 如果是session/请求参数为空:比如尝试读取
session('user')['role'],但session('user')未被正确写入,值为null。
- 如果是用户查询返回空:登录时根据账号查询用户,数据库无匹配记录,导致
针对性修复代码
根据变量来源,添加空值判断或安全访问逻辑:- 情况1:处理模型查询空值
// 错误示例(假设原代码) $user = User::where('email', $request->input('email'))->first(); $role = $user['role']; // $user为null时触发错误 // 修复方案:先判断用户存在,且模型用->访问属性 $user = User::where('email', $request->input('email'))->first(); if (!$user) { return back()->withErrors(['email' => '账号不存在']); } $role = $user->role; - 情况2:安全访问可能为空的数组/变量
使用PHP可选链运算符和空合并运算符做安全处理:// 比如读取session中的用户数据 $role = session('user')?['role'] ?? 'guest';
- 情况1:处理模型查询空值
额外排查点
- 检查
config/auth.php中的认证配置,确认providers下的用户模型路径正确。 - 确认登录逻辑中,用户验证通过后是否正确将用户信息写入session。
- 检查
web中间件是否包含StartSession,确保session能正常读写。
- 检查
内容的提问来源于stack exchange,提问作者Dolittle
相关产品推荐
相关产品推荐

