繁体   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