计划任务未在moodle上运行

问题描述 投票:0回答:1

当 Moodle 的 cron 作业运行时,我得到以下输出:

Execute scheduled task: Clean up ad hoc task metadata (core\task\task_lock_cleanup_task)
!!! Exception - Class 'IntlTimeZone' not found !!!

Fatal error: Uncaught Error: Call to a member function real_escape_string() on null in /home/cbisacok/public_html/lib/dml/mysqli_native_moodle_database.php:1145
Stack trace:
#0 /home/cbisacok/public_html/lib/dml/mysqli_native_moodle_database.php(1274): mysqli_native_moodle_database->emulate_bound_params('SELECT RELEASE_...', Array)
#1 /home/cbisacok/public_html/lib/dml/moodle_database.php(1679): mysqli_native_moodle_database->get_records_sql('SELECT RELEASE_...', Array, 0, 0)
#2 /home/cbisacok/public_html/lib/classes/lock/mysql_lock_factory.php(161): moodle_database->get_record_sql('SELECT RELEASE_...', Array)
#3 /home/cbisacok/public_html/lib/classes/lock/lock.php(120): core\lock\mysql_lock_factory->release_lock(Object(core\lock\lock))
#4 /home/cbisacok/public_html/lib/classes/lock/lock.php(134): core\lock\lock->release()
#5 [internal function]: core\lock\lock->__destruct()
#6 {main}
  thrown in /home/cbisacok/public_html/lib/dml/mysqli_native_moodle_database.php on line 1145

我正在 namecheap 上的共享托管上运行 Moodle。我使用的是 Moodle 版本 4.1.4,使用的是 PHP 版本 8.0.30 我在 php 设置中启用了 intl,如下所示: 这是一些附加的系统信息: 如果我可以添加更多有帮助的信息,请告诉我。此问题导致 Moodle 中的计划任务无法运行

我有点不知道如何继续调试这个问题......

php cron moodle shared-hosting intl
1个回答
0
投票

Cron 使用 cli 版本的 PHP,phpinfo() 使用服务器/Apache 版本的 PHP

检查cli版本是否相同(注意Moodle 4.1.4最高支持PHP 8.1,但不支持8.2)

php -v

并且已启用

intl

php -m

您还可以从命令行运行计划任务来测试它,这可能会为您提供更多信息

https://docs.moodle.org/403/en/Administration_via_command_line#Scheduled_tasks

例如:

php admin/cli/scheduled_task.php --showdebugging --execute='\core\task\task_lock_cleanup_task'

还有一个命令行工具来检查状态

php admin/cli/checks.php
© www.soinside.com 2019 - 2024. All rights reserved.