Запланированные задачи не выполняются в Moodle

Когда запускается задание cron для Moodle, я получаю следующий результат:

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

Я запускаю Moodle на виртуальном хостинге Namecheap. Я использую Moodle версии 4.1.4 и PHP версии 8.0.30. В настройках PHP включен intl, это выглядит так: и вот некоторая дополнительная информация о системе: Пожалуйста, дайте мне знать, если я могу добавить еще какую-либо информацию, которая была бы полезна. Эта проблема приводит к тому, что не выполняются запланированные задачи в Moodle.

Я как бы не понимаю, как двигаться дальше в отладке этой проблемы...

Первое, что нужно проверить: включено ли расширение php-intl как для веб-серверной, так и для CLI-версии PHP?

Ken Lee 13.03.2024 03:17
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
1
547
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Cron использует версию PHP cli, phpinfo() использует версию PHP для сервера/Apache.

Проверьте, совпадает ли версия 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

Привет, большое спасибо, так что версия PHP, которую пыталась использовать задача cron, была версии 7. cron запускал такую ​​команду /opt/alt/php73/usr/bin/php -q /home/user/public_html/ admin/cli/cron.php. но если я просто запускал php -v из командной строки, использовалась версия 8, поэтому я изменил cron для запуска команды следующим образом: php -q /home/user/public_html/admin/cli/cron.php и она работала мне

Marc Hypolite 15.03.2024 02:32

Другие вопросы по теме