1

在命令行上运行 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);

我错过了什么?

4

1 回答 1

0

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

此外,使用的 shell 示例ldapsearch不会编码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
于 2012-07-06T09:34:42.347 回答