在命令行上运行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);
我错过了什么?
答案 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