Moodle论坛通知无法接收,Cron任务遇方法未定义报错求助
解决Moodle Cron任务报错及论坛通知问题
问题定位
你碰到的Exception - Call to undefined method quiz_statistics\task\recalculate::set_last_run_time()错误,核心原因是quiz_statistics插件的定时任务类没有正确继承Moodle的定时任务基类,导致Cron执行时找不到必要的核心方法,直接中断了整个Cron流程——而论坛通知是依赖Cron触发发送的,自然就收不到了。
修复步骤
- 先核对插件兼容性:确认你的Moodle版本和
quiz_statistics插件版本是否匹配。如果是手动装的第三方插件,找插件官方页面查适配列表;如果是Moodle自带的核心插件,说明核心文件大概率损坏了。 - 修复或替换插件文件:
- 第三方插件:卸载当前版本,重新下载对应Moodle版本的兼容包安装。
- 核心插件:从Moodle官方下载同版本的完整安装包,提取
/mod/quiz/statistics/task/recalculate.php文件,替换你站点上的对应文件,同时把文件权限设为服务器可读(一般是755或644)。
- 验证Cron任务:替换完成后,手动触发一次Cron——要么访问站点的
/admin/cron.php页面,要么用Hostinger面板的Cron手动执行功能,看还有没有报错。 - 确认通知恢复:Cron正常运行后,去论坛发个测试回复,等几分钟查收通知;也可以去站点的
/admin/tool/task/scheduledtasks.php页面,查看Forum notifications任务的最近运行状态。
额外排查点
- 检查Hostinger的Cron命令是否正确,标准Moodle Cron命令应该是
php /path/to/your/moodle/admin/cron.php,记得替换成你站点的实际路径,还要确保用的PHP版本和Moodle要求一致。 - 如果替换文件后还报错,清空Moodle缓存(后台
/admin/purgecaches.php),避免旧类缓存搞出问题。
内容的提问来源于stack exchange,提问作者Howard
相关产品推荐
相关产品推荐

