Can't locate object method "new"

Hilfe zu OTRS Problemen aller Art
Post Reply
Rainer
Znuny newbie
Posts: 3
Joined: 16 Dec 2005, 13:28
Location: Koblenz

Can't locate object method "new"

Post by Rainer »

Und zwar habe ich folgendes Problem:

Ich habe OTRS installiert, konfiguriert und es lief auch 4 Tage reibungslos. Das heisst, man konnte Tickets erstellen, es wurden E-Mails versandt usw.

Doch dann wollte ich mich einloggen und als ich die Loginseite aufrief kam nur diese Fehlermeldung:

Software error:
Can't locate object method "new" via package "Kernel::Config" at /opt/otrs//Kernel/System/Web/InterfaceAgent.pm line 75.

Dann habe ich das RPM deinstalliert und das OTRS Verzeichnis gelöscht (Config vorher gesichert). Nun das RPM wieder installiert und die Config wieder zurück kopiert und siehe da, es lief wieder. Jedenfalls für 2-3 Tage.

Dieses Problem hatte ich nun schon 3 mal und jetzt krieg ich das ganze garnicht mehr zum laufen. Im Apache error.log steht auch nur diese Zeile:

[Wed Jan 11 11:09:25 2006] [error] 25088: ModPerl::Registry: [Wed Jan 11 11:09:25 2006] -e: Can't locate object method "new" via package "Kernel::Config" at /opt/otrs//Kernel/System/Web/InterfaceAgent.pm line 75.\n

Das System auf dem OTRS läuft ist ein SUSE 9.2 Prof.

Kann mir jemand helfen?
darkside

Post by darkside »

Hallo,

ob ich so hilfreich sein werde, weiß ich nicht. Ich habe mal mit meinen wenigen Perl-Kenntnissen mal versucht das ganze auseinander zu nehmen.

In dem "InterfaceAgent.pm" Modul wird die Datei "/opt/otrs/Kernel/Config.pm" geladen und eben in Line 75 die Methode "new" ausgeführt ... bzw. soll sie ausgeführt werden.

Die "Config.pm" selbst hat solche Methode wirklich nicht, jedoch die Datei "/opt/otrs/Kernel/Config/Defaults.pm" welche direkt in die "Config.pm" mit einkompiliert werden sollte.

Daher die Fragen:
  1. existiert die Datei "Config.pm" ??
  2. existiert am Ende dieser Datei eine Zeile mit der Syntax

    Code: Select all

    use Kernel::Config::Defaults;
Andreas
Rainer
Znuny newbie
Posts: 3
Joined: 16 Dec 2005, 13:28
Location: Koblenz

Post by Rainer »

ja die datei Comfig.pm existiert und schaut so aus (Kommentare entfernt):

Code: Select all

package Kernel::Config;
# --
sub Load {
    my $Self = shift;
    $Self->{'DatabaseHost'} = 'abas';
    $Self->{'Database'} = 'otrs';
    $Self->{'DatabaseUser'} = 'xxx';
    $Self->{'DatabasePw'} = 'xxx';
    $Self->{DatabaseDSN} = "DBI:mysql:database=$Self->{Database};host=$Self->{DatabaseHost};";

    $Self->{Home} = '/opt/otrs';

    $Self->{CheckMXRecord} = 0;
    $Self->{'SystemID'} = 10;
    $Self->{'SecureMode'} = 1;
    $Self->{'Organization'} = 'Bundesarchiv';
    $Self->{'LogModule::LogFile'} = '/tmp/otrs.log';
    $Self->{'LogModule'} = 'Kernel::System::Log::SysLog';
    $Self->{'FQDN'} = 'otrs.barch.ivbb.bund.de';
    $Self->{'DefaultLanguage'} = 'de';
    $Self->{'DefaultCharset'} = 'utf-8';
    $Self->{'AdminEmail'} = 'root@barch.bund.de';
    $Self->{'ProductName'} = 'Bundesarchiv Ticketsystem';

use strict;
use vars qw(@ISA $VERSION);
use Kernel::Config::Defaults;
push (@ISA, 'Kernel::Config::Defaults');
$VERSION = '$Revision: 1.16 $';
$VERSION =~ s/^\$.*:\W(.*)\W.+?$/$1/;

    $Self->{CustomerUser} = {
        Name => 'LDAP Backend',
        Module => 'Kernel::System::CustomerUser::LDAP',
        Params => {
            Host => 'abas',
            BaseDN => 'o=Bundesarchiv,c=DE',
            SSCOPE => 'sub',
            UserDN => '',
            UserPw => '',
            AlwaysFilter => '',
           Params => {
                port => 389,
                timeout => 120,
                async => 0,
                version => 3,
            },
        },
        CustomerKey => 'uid',
        CustomerID => 'cn',
        CustomerUserListFields => ['cn', 'mail'],
        CustomerUserSearchFields => ['cn', 'sn', 'mail'],
        AdminSetPreferences => 0,
        Map => [
storage-type, http-link, readonly
            [ 'UserFirstname',  'Firstname',  'givenname',       1, 1, 'var', '', 0 ],
            [ 'UserLastname',   'Lastname',   'sn',              1, 1, 'var', '', 0 ],
            [ 'UserLogin',      'Username',   'uid',             1, 1, 'var', '', 0 ],
            [ 'UserEmail',      'Email',      'mail',            1, 1, 'var', '', 0 ],
            [ 'UserCustomerID', 'CustomerID', 'mail',            0, 1, 'var', '', 0 ],
            [ 'UserPhone',      'Phone',      'telephonenumber', 1, 0, 'var', '', 0 ],
],
        ],
    };
}
1;
Und auch die Kernel/Config/Default.pm existiert.
darkside

Post by darkside »

Du hast Deinen Fehler grade selbst gepostet :)

Die Zeilen "use strict" bis "$Version =~ s/..." dürfen doch nicht innerhalb der Funktion "Load" stehen.

In der Originalen Datei steht ganz groß drin "needed system stuff (don't edit this)". Diese Zeilen müssen zwischen der letzten geschweiften Klamme und der "1" am Ende stehen (so wie in der org. config.pm eben auch) ... nicht mittendrin.

Andreas
Rainer
Znuny newbie
Posts: 3
Joined: 16 Dec 2005, 13:28
Location: Koblenz

Post by Rainer »

und siehe da es funktioniert.

ist auch irgendwie logisch wenn man sich das mal genau anschaut :)

Vielen Dank!!!
Post Reply