Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]3168[/thread]

Apache2 & mod_perl2 stürzen ab



<< >> 2 Einträge, 1 Seite
GH@NDI
 2005-11-24 00:52
#29684 #29684
User since
2003-09-21
16 Artikel
BenutzerIn
[Homepage] [default_avatar]
Guten Abend!

Ich habe mir heute mal gedacht, ich könnte doch mal schauen, was mod_perl noch so alles für mich bereit hält und wollte das mal ausprobieren. Soweit so gut. Installation scheint alles geklappt zu haben. Habe jetzt hier einen Apache/2.0.55 und mod_perl2 unter Win2k ServicePack 4 am laufen. Normale CGI-Scripts funktionieren seit Jahren tadellos hier.

Allerdings zeigt das Ding seltsame züge und sofern die normal sein sollten, weis ich nicht, warum alle so von mod_perl schwärmen :)

Und zwar benutze ich Apache2::Reload um Scripte und Module die ich bearbeite eben direkt auch neu geladen werden. Allerdings scheint das bei mir einfach nicht so richtig funktionieren zu wollen.

Wenn ich z.B. folgenden Code habe:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
package ModPerl::PageParser;

use Apache2::Reload;
use Apache2::Const qw(:common);

sub handler {
my $r = shift;
$r->content_type('text/html');

print "Hello from mod_perl";

return Apache2::Const::OK;
}
1;


Dann funktioniert alles soweit wunderbar, ist auch schön schnell :)

Nur wenn ich dann weitermache und unter "use Apache2::Const qw(:common);" noch das CGI Modul einbinde und davon eine Instanz erzeuge:
Code: (dl )
1
2
use CGI;
my $q = new CGI;


So bekomme ich beim ersten mal neu laden einen Internal Server Error. Drücke ich nochmals F5 kommt nochmals das selbe. Beim 3. Versuch die Seite neuzuladen stürzt mir der Apache Server ab. Sobald dieser sich selbst wieder gestartet hat funktioniert allerdings alles wieder einwandfrei.

Jetzt stellt sich mir die Frage, was da schief läuft? Mach ich irgendwas falsch? Aber soweit ich das modperlbook.org entnehmen konnte ist das Code-Technisch alles vollkommen in Ordnung.

Ich kann mir jedenfalls nicht ganz erklären wie das zustande kommt. Das Problem tritt auch nicht ausschlieslich bei der Verwendung von CGI auf, sondern allgemein bei Module und manchmal auch bei normalen Veränderungen (z.B. ändern des Textes). Allerdings kommt es bei 2.terem extram selten vor, während die Verwendung von Modulen scheinbar öfter zu Problemem führt (wobei mir eigentlich gesagt wurde, das man unter ModPerl eigentlich alles in ein Extra Modul kappselt, um so geschachtelte Subs zu vermeiden). Also irgendwo ist der Wrum drin.

Entweder in meiner Herangehensweise an mod_perl oder in mod_perl selbst :)

Gruß Sven
pq
 2005-11-24 02:03
#29685 #29685
User since
2003-08-04
12207 Artikel
Admin1
[Homepage]
user image
du musst die CGI-instanz in der subroutine handler definieren, nicht außerhalb.
und im errorlog steht evtl. etwas mehr info (schau mal im wiki nach internal server error)
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
<< >> 2 Einträge, 1 Seite



View all threads created 2005-11-24 00:52.