Hace unos días, tras actualizar Moodle y cambiar/actualizar las versiones de php del hosting, nos dimos cuenta que los cron job de ese Moodle no estaban funcionando.
En el backend simplemente decía que “el script de tareas cron no se ha ejecutado en más de X horas”. No daba más información.
Pero mirando los logs del servidor, o cuando intentabas ejecutar el script a mano, nos dimos cuenta que salía un error que, entre otras cosas, decía “undefined function current_language()“.
Os decimos cómo solucionarlo.
Solución a undefined function current_language() en los cron job de Moodle.
Básicamente lo que ha pasado es que Moodle ha actualizado sus scripts. Recordad que antes era un ejecutable por web pero ahora es un script del servidor que hay que ejecutar desde el mismo. Y seguramente lo que ocurra es que estás ejecutando el script con una versión más antigua de php de la requerida por el miso.
Los servidores tienen una versión de php “por defecto”. Y cuando ejecutas el script con php -q /rutademoodle/admin/cli/cron.php
se ejecuta con la versión por defecto. Y no es compatible con el script.
Tienes que ejecutarlo con la versión compatible más actualizada que tienes en tu servidor. Por ejemplo con:
php72 -q /rutademoodle/admin/cli/cron.php
o
php73 -q /rutademoodle/admin/cli/cron.php
Nota: la versión y comando a usar depende de tu servidor. Puedes poner php en el cli y darle al tabulador para ver las versiones soportadas. Y probar desde cli con alguna. Luego establecer la que funcione en el cron job.
En algunos hosting (mal configurados) habrá que ejecutar el comando desde la carpeta de php72 ( la que sea).
Os recomendamos los siguientes productos relacionados con la informática: