
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: