PHP ldap_search()和CLI ldapsearch返回不同的结果
在命令行上运行ldapsearch命令时,它会返回大量的结果,而通过PHP执行的等效(或者我认为是这样)查询不会返回任何结果 ldapsearch命令:PHP ldap_search()和CLI ldapsearch返回不同的结果,ldap,ldap-query,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搜索:
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搜索:
//已使用CLI命令中使用的相同凭据进行绑定
$filter='(&(facultyCode=AU)(term=“1380”));
$list=ldap_search($conn,'ou=people,dc=business,dc=ca',$filter,array('uid'),0,0,0);
我遗漏了什么?检查服务器日志以确定搜索请求中传输了什么。在这两个示例中,过滤器可能不是等效的。例如,PHP可能会将
“
字符转换为”
(单引号转换为双引号)。在编码过滤器中,”
和“
是不等价的
此外,使用ldapsearch
的shell示例不会编码term=“1380”
,而是编码term=1380
,这与term=“1380”
不同。换句话说,ldapsearch命令是(某些shell可能以不同方式转义引号字符串):
我没有访问服务器日志的权限,但我会处理这些引用&看看是否可以让它们匹配。谢谢。单引号、双引号、无引号-CLI命令始终有效。单引号、双引号、双引号编码为\22-始终通过PHP返回0个结果。删除引号超时。
term
属性值是否有双引号、编码或其他形式?“term”没有引号。它以4位数字的形式存在:1380。“术语”实际上是一个对象,而不是一个属性。我正在查询组织的中央目录服务,他们就是这样设置的。我有另一个人试图找到如何正确构建查询,所以在此期间,我只是想让我的PHP代码与CLI命令执行相同的操作。在PHP过滤器中,双引号作为属性值的一部分传递给directory server。使用$filter='(&(facultyCode=AU)(term=1380))代码>
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