最近工作中一直在和LDAP打交道。在官方推荐的client-apis中,可以很方便的找到各个语言对应的API,然后与LDAP服务器进行交互。但是在使用ApacheDirectoryStudio的时候,这个软件其实是可以显示Schema数据的,然后仔细看了官方文档,还是没有看到哪里有查询Schema数据的说明(如果有人看到文档中的相关说明,希望可以留言告诉我)。但是找到了php写的客户端phpLDAPAdmin,然后通过它的源码找到了查询Schema数据的方法。通过官方文档,我们发现Schema数据包含以下四部分:syntaxesattributesmatching_rulesobjectclasses。以查询objectclasses为例(也可以一次性查询)。对应的查询方法如下。第一种情况$read_ret=ldap_read($ds,'cn=Subschema','(objectClass=subschema)',['objectclasses']);$read_ret=ldap_read($ds,'cn=Subschema','(objectClass=*)',['对象类']);如果第一个查询找不到,则使用第二个$read_ret=ldap_read($ds,'cn=Aggregate,cn=Schema,cn=configuration,dc=example,dc=com','(objectClass=*)';$read_ret=ldap_read($ds,'cn=Schema,cn=configuration,dc=example,dc=com','(objectClass=*)',['objectclasses']);$read_ret=ldap_read($ds,'cn=Schema,ou=Admin,dc=example,dc=com','(objectClass=*)',['objectclasses']);如果第二类查询找不到,就使用第三类$read_ret=ldap_read($ds,'cn=schema,cn=config','(objectClass=*)',['objectclasses']);
