当前位置: 首页>后端>正文

Laravel6升级Laravel8

由于最近服务器PHP版本升级到了php8.1,导致laravel6无法继续使用。
进入框架即报如下错误:
Return type of Illuminate\Container\Container::offsetExists($key) should either ...

升级步骤:
参照官方文档
从laravel6升级到laravel7:https://learnku.com/docs/laravel/7.x/upgrade/7445#upgrade-7.0
从laravel7升级到laravel8:https://learnku.com/docs/laravel/8.x/upgrade/9352#95878b

修改composer.json文件

Laravel6升级Laravel8,第1张

执行 composer update 命令

  • tips:本人用了dcat-admin扩展,执行composer update的时候会同步更新dcat-admin扩展到最新版本,执行如下命令回滚到历史版本(版本号为原先使用的版本):
    composer require dcat/laravel-admin:"2.1.7-beta"
    其他扩展也可参照此方法回滚,但需要注意的是有些扩展在PHP升级到8.1后无法继续使用老版本,需要更新到最新的支持版本,不支持php8.1就只能重新换一个扩展了。
    比如项目中原先用到了jenssegers/agent扩展来判断访问设备类型,php8.1环境下失效。后替换为相同功能的mobiledetect/mobiledetectlib扩展。

部分代码修改

  • 修改exceptionHandler


    Laravel6升级Laravel8,第2张
  • 修改session配置文件


    Laravel6升级Laravel8,第3张
  • model中的日期格式输出

    protected function serializeDate(DateTimeInterface $date)
    {
        return $date->format($this->dateFormat ?: 'Y-m-d H:i:s');
    }

https://www.xamrdz.com/backend/3u51942750.html

相关文章: