升级目标
由Moodle 4.5+ (Build: 20241129)
升级到Moodle 5.0.1+ (Build: 20250629)
参考教程:moodle升级(详细版)-CSDN博客
操作平台:宝塔
通过宝塔进行备份
备份文件
将/www/wwwroot/moodle 和/www/wwwroot/moodledata 复制到
/usr/moodle/backup/20250702
备份数据库
进入宝塔,选择“数据库菜单”,默认MySQL
点击有备份,在弹窗中点击“备份数据库”按钮,等待备份成功
下载新包
在搭建的moodle网站通告模块检查可用的更新,下载想要升级的版本
开始升级之路
解压
将下载的包上传到/www/wwwroot
重命名原来的moodle文件夹,然后将上传的zip解压为新的moodle文件夹
将旧moodle文件夹中的config.php复制到新的moodle文件夹
升级php
访问moodle网站
提示php版本不够
在软件商店安装高版本php
安装扩展 fileinfo yaml mbstring
修改配置,删除disable_functions中的proc_open,pcntl_signal
在网站设置中修改php版本
再次访问Moodle网站
升级MySQL
点击继续
1. 需要升级mysql
将之前备份的数据库下载下来,然后卸载mysql,重新安装更高版本mysql,然后导入备份
2. php安装扩展exif
3. 使opcache可用
php安装扩展opcache
然后点击moodle网站下方的重新载入
在php.ini增加max_input_vars = 5000,然后重启php,然后重新载入,点击下方的继续按钮
进入到检查插件阶段
将提示“缺少磁盘!”的插件从旧文件夹复制到新文件夹的相应位置
然后继续点击页面下方的按钮,一直往下点
直到升级成功
发现异常
第一次异常
但是在访问设置页面的时候,发现报错了
也就是说在这个类初始化的时候types被传了string,所以全局搜索在什么地方使用时传的string,发现是/lib/editor/atto/plugins/aic/settings.php
这个插件是从旧文件夹中复制过来的,分析可能是这个插件还没有兼容新版本的moodle,构造方法的入参个数都不对,所以简单处理一下,把第四个入参那个空字符串删掉试试,改成下面这样
第二次异常
在访问页面过程中又发现
查看代码如下
这一行代码语法甚是奇怪,所以尝试修改一下
至此终于升级完成!
感言:每次升级都能遇到各种奇奇怪怪的问题