Bonjour Patrick,
Déjà avec quel annuaire LDAP travailles-tu : Windows AD ? Au final j'ai fait un script vbscript qui m'a sorti la liste des utilisateurs AD pas corrects (avec un espace en début ou en fin de nom). 6 noms sont ressortis et on a pu corriger.
Me concernant, Je me demande si le problème ne vient pas du fichier : auth/ldap/auth.php, vers la ligne 750, il y a :
$value = ldap_get_values_len($ldapconnection, $entry, $this->config->user_attribute);
$value = core_text::convert($value[0], $this->config->ldapencoding, 'utf-8');
$value = trim($value);
$this->ldap_bulk_insert($value);
Dans mon cas, dans AD, on a, admettons, "serge.dupont " (un espace en fin de nom). Le script vers la ligne 750, récupère les noms depuis AD mais comme il y a $value = trim($value), "serge.dupont " va devenir "serge.dupont" ensuite ldap_bulk_insert stocke "serge.dupont" dans une table xmldb temporaire tmp_extuser.
Plus tard, vers la ligne 950
// $add_users contient la liste des noms relus à partir de tmp_extuser
foreach ($add_users as $user) {
$user = $this->get_userinfo_asobj($user->username);
// appel de la fonction get_userinfo_asobj qui exécute get_userinfo qui va renvoyer FALSE car get_userinfo va rechercher avec "serge.dupont" dans AD (et donc pas trouver le compte) au lieu de "serge.dupont " (avec un espace). Ensuite le script appelle user_create_user qui se plante car on doit avoir une valeur FALSE je pense, comme paramètre user.
A mon avis, le problème viendrait donc déjà de $value=trim($value);. A la rigueur sur un serveur Moodle de test, voir si en mettant en commentaire cette ligne et en repassant le script si çà va mieux ?
Concernant ton annuaire LDAP et le fait que çà marche dans un cas et pas dans l'autre, je ne saurais quoi te répondre. Ton annuaire LDAP est certainement répliqué sur plusieurs serveurs, peut-être qu'un serveur Moodle attaque un serveur LDAP et ton autre serveur Moodle se connecte à une copie du serveur LDAP où il y aurait des différences ?
Pour Sévérin, au final il me semble qu'en passant par le cron ou sync_task ce sont les mêmes modules php qui sont appelés (?) mais vu votre longue expérience de Moodle comparée à la mienne (2 mois), je ne m'avancerais pas plus dans mes élucubrations
Denis