zimbra无法启动:大小错误:无法从ldap确定启用的服务

时间:2015-11-28 03:53:52

标签: centos ldap zimbra

我在一台服务器上使用CentOS上的Zimbra。 然后,我使用rsync命令将所有数据移动到新服务器。 当我想使用'zmcontrol start'在新服务器上启动Zimbra时,它会抛出此错误:

大小错误:无法从ldap确定启用的服务。无法确定已启用的服务。 缓存已过期或不存在。

我查看了zmcontrol文件,发现里面有这个函数:

  sub getEnabledServices {
  my $ldap_master_url=getLocalConfig("ldap_master_url");
  my $ldap_dn=getLocalConfig("zimbra_ldap_userdn");
  my $ldap_pass=getLocalConfig("zimbra_ldap_password");

  my %s = ();
  $s{"zmconfigd"} = "zmconfigd";

  my @ldap_masters=split(/ /, $ldap_master_url);
  my $master_ref=\@ldap_masters;
  my ($ldap, $result);
  unless ($ldap = Net::LDAP->new( $master_ref, timeout =>30 )) {
    warn "Connect: Unable to determine enabled services from ldap.\n";
    return getCachedServices();
  }
  unless ($result = $ldap->bind($ldap_dn, password => $ldap_pass)) {
    warn "Bind: Unable to determine enabled services from ldap.\n";
    return getCachedServices();
  }
  $result = $ldap->search(base => "cn=servers,cn=zimbra", filter => "cn=$localHostName", attrs => ['zimbraServiceEnabled']);
  if ($result->code) {
    warn "Search error: Unable to determine enabled services from ldap.\n";
    return getCachedServices();
  }
  my $size = $result->count;
  if($size != 1) {
    warn "Size error: Unable to determine enabled services from ldap.\n";
    return getCachedServices();
  }
  my $entry = $result->entry(0); 
  foreach my $value ($entry->get_value('zimbraServiceEnabled')) {
    $s{$value} = $value;
  }
  $result = $ldap->unbind;

  if (scalar keys %s > 0) {
    open (CACHE, ">$cache_file");
    foreach my $service (keys %s) {
      print CACHE "$service\n";
    }
    close(CACHE);
  }
  return \%s;
}

我真的不明白这段代码,只是如果大小不等于1则抛出错误。我的问题是它从哪里获取值?这样我就可以查看一个正常工作的服务器并进行比较。

0 个答案:

没有答案