2012-07-05 44 views
1

在命令行上運行ldapsearch命令時,它會返回大量結果,而通過PHP進行的等效(或我認爲)查詢不會返回任何結果。PHP ldap_search()和CLI ldapsearch返回不同的結果

ldapsearch命令:

ldapsearch -Zx -H ldap://directory.host.ca -D [CREDENTIALS] -w [PASSWORD] -z 0 -l 0 - LLL -b "ou=people,dc=business,dc=ca" "(&(facultyCode=AU)(term="1380")" uid 

PHP搜索:

//binding has already happened with the same credentials as used in the CLI command 
$filter = '(&(facultyCode=AU)(term="1380"))'; 
$list = ldap_search($conn,'ou=people,dc=business,dc=ca',$filter,array('uid'),0,0,0); 

我缺少什麼?

回答

0

檢查服務器日誌以確定在搜索請求中傳輸的內容。這兩個例子中的過濾器可能不相同。例如,PHP可能會將"字符轉換爲'(單引號至雙引號)。在編碼過濾器中,'"不等效。

此外,使用ldapsearch殼示例將不編碼term="1380",而是term=1380,這是不一樣的term="1380"。換句話說,ldapsearch命令是(一些殼可能逃過不同引號的字符串):

ldapsearch -Zx -H ldap://directory.host.ca \ 
    -D [CREDENTIALS] -w [PASSWORD] -z 0 -l 0 \ 
    -LLL -b "ou=people,dc=business,dc=ca" \ 
    '(&(facultyCode=AU)(term=1380)' uid 
+0

我沒有對服務器的訪問日誌,但我會玩的報價和看能不能讓他們匹配。謝謝。 – Pickle 2012-07-06 14:10:24

+0

單引號,雙引號,無引號 - CLI命令始終有效。單引號,雙引號,雙引號編碼爲\ 22 - 總是通過PHP返回0個結果。刪除引號超時。 – Pickle 2012-07-06 14:54:26

+0

'term'屬性值是否有雙引號,編碼或其他? – 2012-07-06 16:20:42