簡體   English   中英

LDAP / PHP問題更新,新添加的用戶

[英]LDAP/PHP Issue updating Newly Added User

我一直在管理的項目遇到了更新LDAP內容的問題。 我的網站使用ldap列出用戶。 新用戶不再顯示,但舊用法顯示。 我已將問題追根溯源,但是對於出什么問題我一無所知。 PHP的主要部分如下所示:

public function getMember($type){
     $memeber ="";
     if($type == "week1"){
          $group = $this->ldap->getGroupInfo(1006);
          $member = $group["users"];
     }else if ($type == "all"){
          $group = $this->ldap->getGroupInfo(1008);
          $member = $group["users"];
     } 

 var_dump($member[116]);       
 $i = 0;

 foreach($member as &$registered){
         $i++;
         $uid = $this->ldap->getUidFromUserName($registered);
         print_r($uid);
         $newInfo = array();
         print_r($registered);     
         if($uid != ""){
                  $userInfos = $this->ldap->getUserInfo($uid);
                  $newInfo["uID"] = $uid;
                  $newInfo["userName"] = $userInfos["userName"];
                  $newInfo["groups"] = $userInfos["groups"];
                  $userName = $newInfo["userName"]; 
         } else { false;
         }
} }
print_r($member);
$member = array_filter($member);
return $member;

var_dump(&members[116]); 輸出顯示: string 'johnr' (length=5) johnr是我添加的用戶,該用戶未顯示在列表中。 這意味着我上面的PHP正在吸引用戶。 通常顯示的數字包含uid,以及所有這些$ newinfo [...] = ...信息。 不是這樣

僅此信息, johnr的群組ID是1006。

print_r($uid); 顯示uid,但僅顯示列表中的uid。 意思是johnr的uid不在其中。

現在,如果您看向底部,則有print_r($member); 輸出[111] => [112] => [113] => [114] => [115] => [116] => [117] => [118] => [119] => [120] => [121] => [122] => [123] => [124] => ) ,其中所有這些數字都是新添加的用戶數組編號(johnr為116),這些數組編號中的每一個應打印的內容[92] => Array ( [uID] => 2003 [userName] => testr [groups] => Array ( [0] => 1006 )注意:這是所有其余顯示內容上面出現的成員,只是那些未出現在列表中的成員的print_r的一部分。

我做了ldapUserSearch, johnr帳戶的ldif信息與工作信息相同。 我也做了ldapGroupSearch和johnr ,與工作用戶一樣。

另一個有趣的想法是,如果將php代碼的if語句更改為if($uid != "" || $uid == ""){則php顯示未顯示但為null的用戶。 因此,它與$uid 但是johnr的uid為2099,所以不確定到底為什么找不到它。

我希望這是足夠的信息以獲取幫助。 如果您有任何疑問,請在下面評論,我會盡力回答。

- - - 編輯 - - - /

事實證明,它不是從ldap的johnr獲取uID,用戶名或組,而是針對每個工作名稱...它能夠將成員轉為數組,因此johnr出現在該數組中,但是在此之后johnr應該沒有屬性。

ldapUserSearch中的所有屬性對於工作用戶和非工作用戶都是相同的。 同樣,這些非工作用戶與工作用戶位於同一組。

getUidFromUserName函數如下所示:

public function getUidFromUserName($username) {
             if(isset($this->userNames[$username]))
                      return $this->userNames[$username];
             $this->lookupUsers();
             if(isset($this->userNames[$username]))
                      return $this->userNames[$username];
             else
                      return false;
}

更多信息。 所有工作帳戶和非工作帳戶的確會顯示在passwd中,並與工作標准一起顯示。

如果需要這些信息,我在Linux服務器上。

LDAP中的什么會引起這樣的問題?

在此上浪費了太多時間...只是不得不增加LDAP中的搜索大小...我猜這就是當您不被允許使用管理工具時發生的事情,當不需要它時,您將無法與PHP嘗試修復它等待修復。 :D

暫無
暫無

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

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