Ho un problema con la connessione ldap.Errore operativo 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);
Il ldap qualsiasi connessione anonima funziona perché lo provo in un browser AD e tutto va bene. In questo codice si ferma a
ldap_search($ds, $dn, $filter, $attributes);
ricevo l'avviso:
Attenzione: ldap_search(): Ricerca: errore di operazioni in .. \ index.php on line 38
Non so davvero quale possa essere la causa di questo errore, apprezzo il tuo aiuto.
Non ci si perde con portata variabile? $ dn (base dn per ricerca) è definito un livello sotto la chiamata ldap_search. Prova a echoing (var_dump) parametri di ricerca ldap appena prima di chiamare search, per assicurarti che tutto sia a posto, o includi il controllo isset ($ dn). O semplicemente definire $ dn incondizionatamente. –
I parametri sono ok, li ho controllati subito prima della chiamata di ricerca e va bene. Un problema che penso possa essere, sono su intranet, non ho le autorizzazioni di amministratore, quindi non posso scrivere in C. Ho copiato l'archivio xampp, non ho installato xampp su questa macchina. Primo anche se ho abilitato l'estensione ldap da php.ini non ha funzionato perché non ho un file in C/windows/system. Quando li ho copiati, tutto funziona, penso. Quindi, l'installazione può essere un problema? –
Che ne dici di utilizzare lo strumento shell per controllare o Apache DirectoryStudio (GUI client LDAP)? Non è necessario essere amministratori locali per installarlo/usarlo, su workstation Linux o Windows, qualunque cosa. Prova a connettere e interrogare il server ldap con altri strumenti oltre a PHP. –