如何克服PHP中ldap_search()函数中的错误“ Operations error”

我需要从我的active Directory(Sirname以'S'开头)中检索数据。 我在LDAP_Search()函数中遇到错误,如下所示 “ ldap_search():搜索:操作错误”

我也在代码中添加了以下几行。但是仍然会发生错误。 ldap_set_option($ ds,LDAP_OPT_REFERRALS,0); ldap_set_option($ ds,LDAP_OPT_PROTOCOL_VERSION,3);

echo "<h3>LDAP query test</h3>";
echo "Connecting ...";
$ds=ldap_connect("XXXXXXXXX");  // must be a valid LDAP server!
echo "connect result is " . $ds . "<br />";
ldap_set_option($ds,LDAP_OPT_REFERRALS,0); 
ldap_set_option($ds,LDAP_OPT_PROTOCOL_VERSION,3);

if ($ds) { 
    echo "Binding ..."; 
    $r=ldap_bind($ds);     // this is an "anonymous" bind,typically
                           // read-only access
    echo "Bind result is " . $r . "<br />";

    echo "Searching for (sn=S*) ...";
    // Search surname entry
    $sr=ldap_search($ds,"o=IT*,co=SL","sn=S*");  
    echo "Search result is " . $sr . "<br />";

    echo "Number of entires returned is " . ldap_count_entries($ds,$sr) . "<br />";

    echo "Getting entries ...<p>";
    $info = ldap_get_entries($ds,$sr);
    echo "Data for " . $info["count"] . " items returned:<p>";

    for ($i=0; $i<$info["count"]; $i++) {
        echo "dn is: " . $info[$i]["dn"] . "<br />";
        echo "first cn entry is: " . $info[$i]["cn"][0] . "<br />";
        echo "first email entry is: " . $info[$i]["mail"][0] . "<br /><hr />";
    }

    echo "Closing connection";
    ldap_close($ds);
} 
else {
    echo "<h4>Unable to connect to LDAP server</h4>";
}

实际结果:应返回以“ S”开头的所有姓氏

liufangxin 回答:如何克服PHP中ldap_search()函数中的错误“ Operations error”

对PHP LDAP或AD不太熟悉,但是我怀疑您的根DN中的星号-如果这是文字星号,则应将其转义。如果不是这样,那么我对为什么您不知道根DN感到困惑。

我还想知道是否可以获得更多错误信息-在我的LDAP经验中,有可用的AdditionalText提供了有关“操作错误”以外发生的情况的更多信息。 “操作错误”涵盖了很多潜在的情况,因此最好将其范围缩小一些-如果其他搜索有效,那么很可能是您的查询,如果没有,那么绑定或服务器。 看来您正在进行匿名绑定-也可以进行匿名搜索吗?

本文链接:https://www.f2er.com/3167285.html

大家都在问