由于最近服务器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文件
执行 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
-
修改session配置文件
model中的日期格式输出
protected function serializeDate(DateTimeInterface $date)
{
return $date->format($this->dateFormat ?: 'Y-m-d H:i:s');
}