2011-12-08 195 views
1

我試圖從Active Directory讀取一些用戶帳戶的所有用戶。我可以連接和驗證就好了。但無論我對這件事的搜索是什麼,我都會得到一個「操作錯誤」。任何想法可能是什麼?取從Active Directory組

我運行Windows 2K8服務器機器上的PHP腳本5.3.8 CLI。 (我不是AD專家:) dsa.mcs告訴我AD主機有DC Type = GC和DC版本W2K8。

// $ds = ldap_connect($host, $port); 
// $db = ldab_bind($ds, $user, $password); 
// $ds and $db are verified, connected and authenticated! 

$dn = "CN=All users in Some City,OU=Some Group,OU=Some City,OU=Company Name,DC=bar,DC=foo,DC=com"; 
//$filter = 'sAMAccountName=' . $username; 
//$filter = "(&(&(&(objectCategory=person)(objectClass=user))))"; 
$filter = "(objectClass=user)"; 
$attributes = array('sn', 'givenName', 'memberOf'); 
$res = ldap_search($ds, $dn, $filter, $attributes); 

// results in 
// ldap_errno(): 1 
// ldap_error(): Operations error 

運行用戶蠻好的,在「終端」(即DOS窗口的thingie)follwing返回列表。

dsget group "CN=All users in Some City,OU=Some Group,OU=Some City,OU=Company Name,DC=bar,DC=foo,DC=com" -members 

WTF我在這裏找不到嗎?

回答

1

我可以上SBS 2003箱重複你的問題。

嘗試添加以下兩行您的通話之間ldap_connect()ldap_bind()

// Use protocol version 3 
ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3); 
// Don't follow referrals 
ldap_set_option($ds, LDAP_OPT_REFERRALS, 0); 

這解決了問題對我來說。