Thread Perl-Script Problem mit mod_perl (1 answers)
Opened by Knochen at 2009-08-12 18:46

Knochen
 2009-08-12 18:46
#124182 #124182
User since
2007-03-28
11 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich habe ActivePerl 5.10 und einen Apache 2.2.11 unter Windows Server 2003 laufen. Nun habe ich über den PPM mod_perl installiert und in der httpd.conf eingerichtet. Dabei habe ich neben LoadFile und LoadModule auch ein PerlRequire auf eine Perl Datei gemacht, in der folgendes drin steht:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
use ModPerl::Util ();
use Apache2::RequestRec ();
use Apache2::RequestIO ();
use Apache2::RequestUtil ();
use Apache2::ServerRec ();
use Apache2::ServerUtil ();
use Apache2::Connection ();
use Apache2::Log ();
use Apache2::Const -compile => ':common';
use APR::Const -compile => ':common';
use APR::Table ();
use Apache2::compat ();
use ModPerl::Registry ();
use CGI ();

1;


Desweiteren hab ich im Block <IfModule alias_module> folgendes hineingeschrieben:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
   <IfModule mime_module>
# Perl handlers / types
<Files ~ "\.(cgi|pl|plx)$">
SetHandler perl-script
Options +ExecCGI
PerlHandler ModPerl::Registry
PerlSendHeader On
PerlSetupEnv On
</Files>
</IfModule>


Soviel zur Konfiguration von mod_perl. Da die She-Bang Zeile ja nicht interpretiert wird habe ich meine beiden eigenen libs lib1.pm und lib2.pm in den lib Ordner von Perl gelegt, welcher auch in der Umgebungsvariable geladen wird.

Nun das Problem. Ich hab eine .pl Datei mit HTML Ausgabe. Es wird ein Frameset ausgeben mit 2 Frames in der jeweils wieder eine .pl Datei geladen wird (alle Dateien befinden sich im gleichen Verzeichnis!!):
Frame 1: header.pl
Frame 2: enter.pl

In der header.pl steht folgender Teil:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
use strict;
use lib1;

my $q=new CGI;
my $name = lc($q->param('name'));
my $sessionid = $q->param('sessionid');
my $DB = $wacsapi::WACSDB;

#SQL
....

print ( "Content-Type: text/html\n\n" );
print "<html>";
print "<head>";

&wacsInitMenuAndButtons;

...


In der enter.pl steht folgender Teil:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
use strict;
use lib1;

#Variablen
my $q = new CGI;
my $DB=$marisapi::WACSDB;

#mitgeg. Variablen
my $remote_user=lc($q->param('name'));
my $remote_password=$q->param('passwort');

print ( "Content-Type: text/html\n\n" );
print "<html>";
print "<head>";
print " <link rel='stylesheet' type='text/css' href='/WUI/styles/wacsstyle.css'>";
print " <link rel='stylesheet' type='text/css' href='/WUI/styles/roundedges/niftyCorners.css'>";
print " <title>Anmeldung</title>";

&wacsInitMenuAndButtons;

...


Das Script header.pl wird ohne Probleme ausgeführt. Beim Script enter.pl krieg ich im error.log des Apache folgende Fehlermeldung angezeigt:

Undefined subroutine &ModPerl::ROOT::ModPerl::Registry::C_3a_Programme_MARIS_WebServer_cgi_2dbin_WUI_enter_2epl::wacsInitMenuAndButtons called at C:/Programme/MARIS/WebServer/cgi-bin/WUI/enter.pl line 38.\n

Ich frage mich nun warum die Subroutine wacsInitMenuAndButtons in dem Script header.pl ohne Probleme geladen durchgeführt wird un im Script enter.pl nicht! Hat irgendjemand eine Idee? In der Subroutine wird nur HTML ausgegeben, mehr nicht!

View full thread Perl-Script Problem mit mod_perl