Undefined Subroutine (was: CALLING EXTERNALAUTH TESTERS - v0.07_01 nowavailable.)

I’ve checked and I’m not sure what’s going wrong, still. Basic config
seems OK. ExternalAuth is in place and fully (re-)installed. LDAP.pm
exists and is properly readable by the webserver:

root@data:/opt/rt3/var/log# ls -lah

/opt/rt3/local/plugins/RT-Authen-
ExternalAuth/lib/RT/Authen/ExternalAuth/
total 44K
drwxr-xr-x 2 www-data www-data 4.0K 2008-11-14 16:37 .
drwxr-xr-x 3 www-data www-data 4.0K 2008-11-14 16:37 …
-r–r–r-- 1 www-data www-data 13K 2008-11-06 13:20 DBI.pm
-r–r–r-- 1 www-data www-data 18K 2008-11-06 13:36 LDAP.pm

And yet I still get

Undefined subroutine &RT::Authen::ExternalAuth::UserExists called at
/opt/rt3/local/plugins/RT-Authen-ExternalAuth/html/Callbacks/ExternalAut
h/autohandler/Auth line 39.

When I attempt any kind of login. Line 39 is the last line in this
block:

    # Unless we have loaded a valid user with a UserID
    # check if user exists externally and autocreate if it does
    unless ($session{'CurrentUser'}->Id) {
        if(RT::Authen::ExternalAuth::UserExists($user)){

and my debug-level logs for this show the following (password is bogus -
what I actually typed, just not a real password):

[Fri Nov 14 21:37:54 2008] [error]: Working around bug in RT and
reloading RT::User
(/opt/rt3/local/plugins/RT-Authen-ExternalAuth/html/Callbacks/ExternalAu
th/autohandler/Auth:12)
Trace begun at /opt/rt3/bin/…/lib/RT.pm line 289
Log::Dispatch::ANON(‘Log::Dispatch=HASH(0xc010f90)’, ‘Working around
bug in RT and reloading RT::User’) called at
/opt/rt3/local/plugins/RT-Authen-ExternalAuth/html/Callbacks/ExternalAut
h/autohandler/Auth line 12
HTML::Mason::Commands::ANON(‘pass’, ‘65dfg’, ‘user’, ‘munsch’)
called at /usr/local/share/perl/5.8.8/HTML/Mason/Component.pm line 135
HTML::Mason::Component::run(‘HTML::Mason::Component::FileBased=HASH(0xc8
e2c60)’, ‘pass’, ‘65dfg’, ‘user’, ‘munsch’) called at
/usr/local/share/perl/5.8.8/HTML/Mason/Request.pm line 1279
eval {…} at /usr/local/share/perl/5.8.8/HTML/Mason/Request.pm line
1274
HTML::Mason::Request::comp(undef, undef, ‘pass’, ‘65dfg’, ‘user’,
‘munsch’) called at /opt/rt3/bin/…/lib/RT/Interface/Web/Request.pm line
176
RT::Interface::Web::Request::callback(‘RT::Interface::Web::Request=HASH(
0xc9081e0)’, ‘pass’, ‘65dfg’, ‘user’, ‘munsch’, ‘CallbackName’, ‘Auth’)
called at /opt/rt3/share/html/autohandler line 253
HTML::Mason::Commands::ANON(‘pass’, ‘65dfg’, ‘user’, ‘munsch’)
called at /usr/local/share/perl/5.8.8/HTML/Mason/Component.pm line 135
HTML::Mason::Component::run(‘HTML::Mason::Component::FileBased=HASH(0xc7
dc4d0)’, ‘pass’, ‘65dfg’, ‘user’, ‘munsch’) called at
/usr/local/share/perl/5.8.8/HTML/Mason/Request.pm line 1279
eval {…} at /usr/local/share/perl/5.8.8/HTML/Mason/Request.pm line
1274
HTML::Mason::Request::comp(undef, undef, undef, ‘pass’, ‘65dfg’, ‘user’,
‘munsch’) called at /usr/local/share/perl/5.8.8/HTML/Mason/Request.pm
line 473
eval {…} at /usr/local/share/perl/5.8.8/HTML/Mason/Request.pm line 473
eval {…} at /usr/local/share/perl/5.8.8/HTML/Mason/Request.pm line 425
HTML::Mason::Request::exec(‘RT::Interface::Web::Request=HASH(0xc9081e0)’
) called at /usr/local/share/perl/5.8.8/HTML/Mason/ApacheHandler.pm line
168
HTML::Mason::Request::ApacheHandler::exec(‘RT::Interface::Web::Request=H
ASH(0xc9081e0)’) called at
/usr/local/share/perl/5.8.8/HTML/Mason/ApacheHandler.pm line 825
HTML::Mason::ApacheHandler::handle_request(‘HTML::Mason::ApacheHandler=H
ASH(0x1171890)’, ‘Apache2::RequestRec=SCALAR(0xc923dd0)’) called at
/opt/rt3/bin/webmux.pl line 148
eval {…} at /opt/rt3/bin/webmux.pl line 148
RT::Mason::handler(‘Apache2::RequestRec=SCALAR(0xc923dd0)’) called at -e
line 0
eval {…} at -e line 0

Any help or pointing in any kind of direction at all would be
appreciated. I don’t understand what the logs are trying to tell me.
LDAP.pm is there, ::UserExists is called by the code, but it complains
there’s no such animal. This is a 5-minute-old fresh install of 7_01.

Clearly it’s working for most people - what’s so special about my
::UserExists call…?

Halp!,

Rob

PeacheySent: Thursday, November 13, 2008 4:39 AM
To: Robert Munsch
Cc: RT Users
Subject: Re: [rt-users] CALLING EXTERNALAUTH TESTERS - v0.07_01
nowavailable.

Robert Munsch wrote:

Still experiencing this. Not sure what’s going on. Any attempt at
login for any user - root or otherwise - gets this:

Undefined subroutine &RT::Authen::ExternalAuth::UserExists called at

/opt/rt3/local/plugins/RT-Authen-ExternalAuth/html/Callbacks/ExternalAut

h/autohandler/Auth line 39.

The difference being only that if I tried logging in as a user that
doesn’t exist yet and should be looked up in AD, refreshing the page
gives me the login screen again: and if I tried logging in as root, it
says line 89 instead of 39 and refreshing the page gives me RT at a
glance successfully.

Very confused.

I would really like to help, but I’m having difficulty seeing where the
problem might be. It’s very much a perl/systemconfiguration/rt-core
problem - I’m much better on ExternalAuth issues.

You might want to try, as the user your web server runs as,
not root:
perl -I/opt/rt3/local/plugins/RT-Authen-ExternalAuth/lib -
MRT::Authen::ExternalAuth -e1

Did that. No apparent output: just hangs until I ctrl-C.

This could be telling… though I’m not sure what of.

I know this has probably been mentioned before, but just in case it’s
worth at least suggesting:

chown -R apache:apache /opt/rt3

(or whatever is your web user, web group and $RTHOME).
Kind Regards,

Mike Peachey, IT
Tel: +44 114 281 2655
Fax: +44 114 281 2951
Jennic Ltd, Furnival Street, Sheffield, S1 4QT, UK
Comp Reg No: 3191371 - Registered In England