Perl 找不到/无法加载OTRS.log pm文件

Perl 找不到/无法加载OTRS.log pm文件,perl,otrs,Perl,Otrs,我正在windows 2008服务器上使用OTRS 3.2.11。我对Kernel/Output/HTML/NotificationUIDCheck.pm文件做了一些修改,以消除红色警告消息,该消息表示不要使用超级用户帐户。。。。 现在,该消息不再显示,但日志文件继续显示该消息: [Sun May 18 07:59:54 2014][Error][Kernel::Output::HTML::Layout::NavigationBar][2932] Module Kernel/Output/HTM

我正在windows 2008服务器上使用OTRS 3.2.11。我对Kernel/Output/HTML/NotificationUIDCheck.pm文件做了一些修改,以消除红色警告消息,该消息表示不要使用超级用户帐户。。。。 现在,该消息不再显示,但日志文件继续显示该消息:

[Sun May 18 07:59:54 2014][Error][Kernel::Output::HTML::Layout::NavigationBar][2932] Module Kernel/Output/HTML/NotificationUIDCheck.pm not found/could not be loaded!
下面是正在运行的NotificationUIDCheck.pm:

package Kernel::Output::HTML::NotificationUIDCheck;

use strict;
use warnings;

sub new {
my ( $Type, %Param ) = @_;

# allocate new hash for object
my $Self = {};
bless( $Self, $Type );

# get needed objects
for (qw(ConfigObject LogObject DBObject LayoutObject UserID)) {
    $Self->{$_} = $Param{$_} || die "Got no $_!";
}
return $Self;
}
原始文件如下所示:

package Kernel::Output::HTML::NotificationUIDCheck;

use strict;
use warnings;

sub new {
my ( $Type, %Param ) = @_;

# allocate new hash for object
my $Self = {};
bless( $Self, $Type );

# get needed objects
for (qw(ConfigObject LogObject DBObject LayoutObject UserID)) {
    $Self->{$_} = $Param{$_} || die "Got no $_!";
}
return $Self;
}

sub Run {
my ( $Self, %Param ) = @_;

# return if it's not root@localhost
return '' if $Self->{UserID} != 1;

# show error notfy, don't work with user id 1
return $Self->{LayoutObject}->Notify(
    Priority => 'Error',
    Link     => '$Env{"Baselink"}Action=AdminUser',
    Data =>
        '$Text{"Don\'t use the Superuser account to work with OTRS! Create new Agents  and work with these accounts instead."}',
);
}

1;

我想有些东西不见了,你能帮大家找出解决方法吗

我修复了它,伙计们,子运行确实丢失了,下面是完整的代码,没有日志错误:

package Kernel::Output::HTML::NotificationUIDCheck;
use strict;
use warnings;

sub new {
my ( $Type, %Param ) = @_;

# allocate new hash for object
my $Self = {};
bless( $Self, $Type );

# get needed objects
for (qw(ConfigObject LogObject DBObject LayoutObject UserID)) {
    $Self->{$_} = $Param{$_} || die "Got no $_!";
}
return $Self;
}

sub Run {
my ( $Self, %Param ) = @_;

# return if it's not root@localhost
return '' if $Self->{UserID} != 1;
}
1;

首先,我不知道你为什么要用“不使用超级用户帐户”以外的东西来修复“不使用超级用户帐户”警告

您实际上不想使用此帐户是有原因的,这是因为您使用此帐户时ACL不适用,而且超级用户帐户在默认情况下是通过电子邮件和/或客户门户创建的所有票据的所有者

即使如此,如果您不想看到错误消息,也应该将其添加到Kernel/Config.pm文件中以禁用检查:

$Self->{'Frontend::NotifyModule'}->{'200-UID-Check'}

这样就不需要更改代码。

修改后的代码中缺少的是运行子例程。我应该在哪里添加它?好的!!我不得不承认,这不是解决问题的正确方法。但是Admin>sysconfig>fronted::notifymodule200 UID检查是灰色的…无法选中或取消选中该框。啊!没错,你不能禁用配置选项。修改了解决方案以解决此问题。我将该行添加到config.pm文件,删除缓存并重建配置,但它仍然是灰色的!!我遗漏了什么吗?是的,它是灰色的,但通知模块也不再处于活动状态。如果希望在SysConfig中禁用它,则需要添加一个XML文件。把这个选项放在Config.pm中就可以了。哦…好的…谢谢!!我没试过……但我以后会做的!!