我一直在管理的项目遇到了更新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,但只显示了列表中显示的那些人。意思是johnr的uid不在那里。
现在,如果你向下看print_r($member);
输出[111] => [112] => [113] => [114] => [115] => [116] => [117] => [118] => [119] => [120] => [121] => [122] => [123] => [124] => )
,其中所有这些数字都是新添加的用户数组编号(johnr's是116),应该为每个数组编号打印的内容是什么[92] => Array ( [uID] => 2003 [userName] => testr [groups] => Array ( [0] => 1006 )
的行注意:这是所有其他成员出现的所有成员所显示的内容。上面只是对于那些没有出现在列表中的人来说是print_r。
我做了ldapUserSearch和johnr
帐户ldif信息与工作信息相同。我也做了一个ldapGroupSearch和johnr
也和工作用户一样。
另一个有趣的想法是,如果你改变php代码,如果语句到if($uid != "" || $uid == ""){
,那么php会显示那些没有显示但是为空的用户。所以它与$uid
有关。但是johnr有一个2099年的uid,所以不确定为什么它找不到它。
我希望这是足够的信息来获得一些帮助。如果您有任何疑问,请在下面发表评论,我会尽力回答。
------ ------编辑/
结果表明它并没有从johnr
的ldap中获取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和group出现在工作标准中。
如果需要这些信息,我在Linux服务器上。
LDAP中会出现这样的问题吗?
答案 0 :(得分:0)
浪费了太多时间...... 只是不得不增加LDAP中的搜索大小...我想这就是当你不允许使用管理工具时会发生什么,你不能在不需要修复的情况下与PHP试图修复它。 :d