[英]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.