J'ai un problème avec la connexion LDAP.
$hostname="ldap://sub.domain.com";
$ds=ldap_connect($hostname, 389);
ldap_set_option ($ds, LDAP_OPT_REFERRALS, 0) or die('Unable to set LDAP opt referrals');
ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3) or die('Unable to set LDAP protocol version');
if ($ds)
{
$dn = "OU=Users,OU=ro,DC=sub,DC=domain,DC=com";
if (!($ldapc=ldap_bind($ds))) {
echo "<p>Error:" . ldap_error($ds) . "</p>";
echo "<p>Error number:" . ldap_errno($ds) . "</p>";
echo "<p>Error:" . ldap_err2str(ldap_errno($ds)) . "</p>";
die;
}
$attributes = array("sn");
$filter = "(sn=*)";
$result = ldap_search($ds, $dn, $filter, $attributes);
echo $result;
$info = ldap_get_entries($ds, $result);
for ($i=0; $i < $info["count"]; $i++) {
echo $info[$i]["ou"][0];
}
} else {
echo "<h4>Unable to connect to LDAP server</h4>";
}
ldap_unbind($ds);
Le ldap toute connexion anonyme fonctionne car je le teste dans un navigateur AD et tout va bien. Dans ce code, il s'arrête à
ldap_search($ds, $dn, $filter, $attributes);
Je reçois l'avertissement:
Avertissement: ldap_search (): Recherche: erreur d'opérations dans ..\index.php sur la ligne 38
Je ne sais pas vraiment quelle peut être la cause de cette erreur, j'apprécie votre aide.
Pour le retirer de la liste sans réponse:
J'ai trouvé le problème, c'était le problème de liaison. Le serveur accepte la liaison anonyme mais pas la recherche. Et avec un utilisateur et un pass a fonctionné mais je faisais une erreur. Pour l'utilisateur, je n'ai considéré que le nom d'utilisateur de Windows et non pas l'emplacement complet de AD, maintenant cela fonctionne.
J'ai eu ce problème, mais j'ai été correctement lié à un utilisateur autorisé à rechercher.
Je l'ai résolu en configurant cette option pour fonctionner avec Active Directory:
ldap_set_option($connection, LDAP_OPT_REFERRALS, 0);