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);
LDAPブラウザーは匿名接続で機能します。これは、ADブラウザーでそれをテストし、すべてが正常であるためです。このコードでは、それは
ldap_search($ds, $dn, $filter, $attributes);
私は警告を受け取ります:
警告:ldap_search():検索:38行目の..\index.phpの操作エラー
このエラーの原因が何であるか本当にわかりません。ご協力いただきありがとうございます。
未回答リストから削除するには:
私は問題を見つけました、バインドの問題でした。サーバーは匿名バインドを受け入れますが、検索は受け入れません。そして、ユーザーとパスでうまくいきましたが、私はミスをしていました。ユーザーの場合、ADからのすべての場所ではなく、単にde windowsのユーザー名を検討しましたが、これで機能します。
この問題がありましたが、検索を許可されたユーザーに正しくバインドされました。
Active Directoryで動作するようにこのオプションを設定することで解決しました:
ldap_set_option($connection, LDAP_OPT_REFERRALS, 0);