Moodle计划任务无法运行问题求助
解决Moodle 4.1.4 cron任务报错:IntlTimeZone类未找到及数据库致命错误
问题核心
报错的根源是CLI版本的PHP未加载intl扩展(网页端PHP开启intl不代表cron使用的CLI PHP也开启了),后续数据库错误是该异常触发的连锁反应(任务锁释放时数据库连接未正常初始化)。
调试与解决步骤
确认cron使用的PHP环境状态
- 创建
phpinfo.php文件,内容为:<?php phpinfo(); ?> - 通过SSH登录主机,执行命令:
php /home/cbisacok/public_html/phpinfo.php,查看输出中intl扩展是否存在。 - 如果CLI PHP未加载intl,需要在Namecheap的cron任务设置中,指定PHP8.0的完整路径(比如
/usr/local/php80/bin/php,具体路径可咨询主机商),确保使用的PHP版本已启用intl。
- 创建
验证Moodle环境的intl状态
- 登录Moodle后台,进入站点管理 > 服务器 > PHP信息,确认网页端PHP的intl扩展已加载。
- 临时在
config.php顶部添加调试代码,触发cron后查看日志:
查看cPanel的错误日志,确认CLI环境下intl是否加载。error_log("PHP Version: " . phpversion()); error_log("Intl Loaded: " . (extension_loaded('intl') ? 'Yes' : 'No'));
临时解除任务锁(可选)
如果因错误导致任务锁卡住,可手动清理数据库:- 登录数据库管理工具(如phpMyAdmin),找到
mdl_task_lock表(前缀可能不同,以你的Moodle配置为准)。 - 备份表后,清空表内所有记录,解除被卡住的任务锁。
- 登录数据库管理工具(如phpMyAdmin),找到
联系主机商支持
若共享主机的CLI PHP扩展无法自行修改,直接联系Namecheap技术支持,要求为PHP8.0 CLI版本启用intl扩展。
内容的提问来源于stack exchange,提问作者Marc Hypolite
相关产品推荐
相关产品推荐

