Hola Rocío,
Esa excepción salta en este chequeo:
if (!in_array($id, $this->get_perfiles())) {
throw new \Exception("PERSONA: Error interno '$id'");
}
Los perfiles se cargan a partir de esta consulta:
SELECT mptu.tipo_usuario
FROM mdp_personas_tipo_usuario mptu
INNER JOIN acc_tipos_usuarios atu
ON mptu.tipo_usuario = atu.tipo_usuario
WHERE mptu.persona = {$parametros['persona']}
AND mptu.tipo_usuario <> 'Gestion'
ORDER BY atu.orden_acceso_default
¿Podrías verificar si para la persona con la que estás probando tiene efectivamente el perfil “Docente”?
Saludos,
Fernando