Hola programador,
Tal vez lo primero a realizar sea verificar que PHP cuente con un directorio temporal, con los permisos adecuados para escribir en él.
Esto lo podrías averiguar revisando un archivo "phpinfo" (Moodle incluye dicho archivo en el menú del administrador).
Al respecto, cabe aclarar que en el archivo "php.ini" es donde se habilita el directorio respectivo.
Si no hay ninguno habilitado, PHP usa el que tiene definido el propio sistema operativo.
Pero si por alguna circunstancia el usuario del servidor no tiene privilegios para escribir en él, entonces hay que definirlo con los permisos correspondientes.
Saludos