我在一台服务器上使用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则抛出错误。我的问题是它从哪里获取值?这样我就可以查看一个正常工作的服务器并进行比较。