使用PHP和LDAP列出广告组成员

使用PHP和LDAP列出广告组成员,php,active-directory,ldap,Php,Active Directory,Ldap,我正在尝试使用PHP和LDAP列出Active Directory中某个OU中的组的组成员。在大多数情况下,这是可行的,但如果用户来自另一个域,它就不会发现他们。下面是我尝试过的最基本的尝试。我也尝试过其他代码示例。当调试打开到7时,我看到它绑定到Asia域,我可以在错误日志中看到用户的DN,但在php中不会返回 <?php //LDAP server address $LDAP_Server = "ldap://americas.ad.company.com"; //AD User to

我正在尝试使用PHP和LDAP列出Active Directory中某个OU中的组的组成员。在大多数情况下,这是可行的,但如果用户来自另一个域,它就不会发现他们。下面是我尝试过的最基本的尝试。我也尝试过其他代码示例。当调试打开到7时,我看到它绑定到Asia域,我可以在错误日志中看到用户的DN,但在php中不会返回

<?php
//LDAP server address
$LDAP_Server = "ldap://americas.ad.company.com";
//AD User to use
$LDAP_User = "username@americas.ad.company.com";
//AD User Password
$LDAP_Password = "Password";
//FQDN path where search will be performed. OU - organizational unit / DC - domain component
$LDAP_DN = "OU=SITE,OU=US,DC=americas,DC=ad,DC=company,DC=com";
$LDAP_Search_String = "(&(objectCategory=person)(objectClass=user)(memberof=CN=SITE-UG-Group-M,OU=FileServer,OU=Groups,OU=SITE,OU=US,DC=americas,DC=ad,DC=company,DC=com))";
// connecting to LDAP server
$LDAP_Connection = ldap_connect($LDAP_Server);
$LDAP_Bind = ldap_bind($LDAP_Connection, $LDAP_User , $LDAP_Password);
ldap_set_option($LDAP_Connection, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($LDAP_Connection, LDAP_OPT_REFERRALS, 0);
// performing search
$LDAP_Search = ldap_search($LDAP_Connection, $LDAP_DN, $LDAP_Search_String);
// Sort the results based on description
ldap_sort($LDAP_Connection, $LDAP_Search, 'samaccountname');

$LDAP_Data = ldap_get_entries($LDAP_Connection, $LDAP_Search);

echo "Found " . $LDAP_Data["count"] . " members<br><br>";

for ($i=0; $i<$LDAP_Data["count"]; $i++) {
    echo $LDAP_Data[$i]["dn"] . "<br>" . $LDAP_Data[$i]["cn"][0] . "<br>";
}
?>


我真的不明白PHP在哪里“不返回”用户名。您在错误日志中看到用户了吗?你能给我们看一段吗?。还有两件小事:第一:你应该在连接和绑定之间调用
set\u选项
,而不是在绑定之后。第二:ldap_sort不受欢迎,因为它只在客户端排序,而不在服务器端排序,因此它可能不是您想要的。上面的基本示例只返回用户,例如我们的美洲域。如果我使用PowerShell或VBscript,它将返回所有用户。您是否尝试将LDAP\u OPT\u引用设置为
true