laravel项目报错集锦
非预期的对象操作符
ErrorException (E_ERROR)
syntax error, unexpected '->' (T_OBJECT_OPERATOR) (View: D:\laragon323\www\lar57\blog57\resources\views\admin\partials\errors.blade.php) (View: D:\laragon323\www\lar57\blog57\resources\views\admin\partials\errors.blade.php)
排查,是模板对象变量书写错误,极大可能出现如下错误
- 变量名少个$符
- 控制器传过来的渲染对象变量名与模板所在的对象变量名不一致。
- …
419 session过期错误
通常在诸如登录这种场景时,出现此种错误
419
Sorry, your session has expired. Please refresh and try again.
分析
- session的确过期了
- session在服务端与客户端之间没有得到正常传递
- csrf验证导致,数据不一致,或被拦截
laravel会在html文档的meta内,
或ajax请求的header头,或表单隐藏域,通过csrf_token()生成
后台中间件VerifyCsrfToken会进行验证
方案
- 前两种情况,极易排除
- 后者要么在中间件except属性项排除不验证的请求
- 要么老老实实正确的在前端页面视场景加上如下合适的代码
// 文档头部
<meta name="csrf-token" content="{{ csrf_token() }}">
// ajax请求时
$.ajaxSetup({headers: {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')}});
// 表单
<input type="hidden" name="_token" value="{{ csrf_token() }}">
- 补充
- 前端页面填写错误,比如name错了,数据不一致也会报419