PHP ldap_search()和CLI ldapsearch返回不同的结果

时间:2012-07-05 22:34:11

标签: ldap ldap-query

在命令行上运行ldapsearch命令时,它会返回大量的结果,而通过PHP的等效(或者我认为)查询则不返回任何内容。

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);

我错过了什么?

1 个答案:

答案 0 :(得分:0)

检查服务器日志以确定搜索请求中传输的内容。在两个示例中,过滤器可能不相同。例如,PHP可能会将"个字符转换为'(单引号为双引号)。在编码过滤器内,'"不等效。

此外,使用ldapsearch的shell示例不会编码term="1380",而是编码term=1380,这与term="1380"不同。换句话说,ldapsearch命令是(某些shell可能以不同方式转义引用的字符串):

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