簡體   English   中英

使用PHP ldap_bind函數獲取錯誤“無法聯系LDAP服務器”

[英]Getting Error “ Can't contact LDAP server” using PHP ldap_bind function

我必須將Active Directory用戶與服務器綁定。 我可以成功連接服務器但不知何故無法綁定用戶。我不知道是什么原因。

以下是我的PHP源代碼:

$basedn="dc=domain,dc=com";
echo "Connecting ...<br/>";
$ds=ldap_connect("192.XXX.XXX.XX");  // must be a valid LDAP server!
echo "connect result is ".$ds."<br/>";

if($ds){
    ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
    $lb=ldap_bind($ds,"cn=xyz,o=domain.com","password");
    if ($lb) {
        echo "LDAP bind successful...";
    } else {
        echo "LDAP-Errno: " . ldap_errno($ds) . "<br />";
        echo "LDAP-Error: " . ldap_error($ds) . "<br />";
    }       

    ldap_close($ds);
}

你能告訴我我在ldap_bind函數中通過用戶名參數ldap_bind什么嗎? 請提供任何幫助我這樣做的源代碼? 任何幫助將不勝感激。

我在一個域控制器上運行Server 2008 R2,該域最初是2003,並且必須使用login @ domain格式。 我驗證了DN是正確的,2008之前的域管理員帳戶可以使用DN進行連接。 但是,除非使用了登錄@域格式,否則非管理員無法使用。

現在,我的代碼嘗試:

$ lb = ldap_bind($ ds,“cn = login,o = domain.com”,“password”);

然后,如果沒有找到,嘗試:

$ lb = ldap_bind($ ds,“login@domain.com”,“密碼”);

這是一個快速解決方案,同時我解決了DN無法正常工作的原因。 我建議即使您使用的是2008,也請嘗試使用2003格式。

在Windows Server 2003上使用Active Directory,而不是:

$lb = ldap_bind($ds, "cn=login,o=domain.com", "password");

我不得不使用:

$lb = ldap_bind($ds, "login@domain.com", "password");

但是,您的錯誤消息( 無法聯系LDAP服務器 )看起來您沒有向ldap_connect()提供PHP腳本可訪問的服務器地址(請檢查Windows防火牆等)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM