Error Moodle cannot find file with external function implementation

Cuando intentas conectar al webservice de Moodle para añadir algún servicio externo y recibes el siguiente error:

Detectado un error de codificación, debe ser corregido por un programador: Cannot find file with external function implementation

Más información sobre este error

Información de depuración:
Error code: codingerror

Trazado de la pila (stack):
line 87 of /lib/externallib.php: coding_exception thrown
line 36 of /admin/webservice/documentation.php: call to external_api::external_function_info()




Algún módulo o plugin de terceros está provocando este error.


Si habilitas el debug de Moodle y no recibes información sobre qué puede estar provocando el error, prueba a hacer lo siguiente:


1) Edita la línea 86 del archivo implicado en el error:


/lib/externallib.php


2) Cambia el siguiente código que viene por defecto:

            if (!file_exists($function->classpath)) {
                throw new coding_exception('Cannot find file with external function implementation');
            }

Por este otro al que añadiremos la función de imprimir en pantalla el debug de ese error print_r($function);


            if (!file_exists($function->classpath)) {
                print_r($function);
                throw new coding_exception('Cannot find file with external function implementation');
            }


Ahora si entras en la web de nuevo aparecerá un error que te indicará el módulo o plugin que está provocando el error.


Si no aparece ningún error, mira el código fuente de la página (usando las teclas Control + U) y debe aparecer al principio del todo.


Por ejemplo, en este caso vemos el siguiente código que aparece al principio del todo:


stdClass Object
(
    [id] => 533
    [name] => block_remuiblck_complete_task
    [classname] => block_remuiblck\external\api
    [methodname] => complete_task
    [classpath] => /home/xxxxxxxx/public_html/blocks/remuiblck/externallib.php
    [component] => block_remuiblck
    [capabilities] => 
    [services] => 
)


En este caso es un bloque del theme RemUI es el que está causando el problema.


3)¿Cómo solucionar el problema?


Iremos a Administración del sitio - Extensiones - Vista General de Extensiones y veremos si el módulo que da el error está instalado o falta en el sistema


En este caso vemos que el módulo existe en la base de datos pero no en el disco:



Por lo que procederemos a instalar el bloque que falta para solucionar definitivamente el error.