Guten Abend :)
Ich arbeite mich derzeit ein wenig in mod_perl2 ein. Und hab damit so hin und wieder meine Schwierigkeiten *g*
Aktuelles Problem ist, dass
use CGI::Carp qw(fatalsToBrowser);
unter mod_perl2 nicht zu funktionieren scheint. Bzw. es funktioniert bei ModPerl::Registry scripts. Allerdings Scripts für die ich eine eigene handler Routine habe (weis nicht wie ich das nennen soll), da funktioniert es nicht.
Folgendes Beispiel:
auszug aus mod_perl.conf
<Location /printenv>
SetHandler perl-script
PerlResponseHandler PrintEnv
PerlOptions +ParseHeaders
</Location>
Mit der Option ParseHeaders hab ich schon gespielt. Hätte ja sein können, dass CGI::Carp nicht über $r->content_type die Header rausschickt sondern einfach direkt mit print "Content-Type: text/html\n\n"; was ja ohne aktivieren von "ParseHeaders" von mod_perl nicht erkannt wird.
Das entsprechende Testscript PrintEnv.pm:
1
2
3
4
5
6
7
8
9
10
11
12
13
package PrintEnv;
use Apache2::Const -compile => qw(OK);
use CGI::Carp qw(fatalsToBrowser);
sub handler {
my $r = shift;
$r->content_type('text/html');
die "first line...";
print "Hallo Welt!";
return Apache2::Const::OK;
}
1;
Ergebniss ist ein Internal Server Error. Wenn man im Error-Log nachsieht, steht dort auch wie erwartet
[Tue Dec 20 20:10:13 2005] [error] [client 127.0.0.1] first line... at E:/perl/lib/CGI/Carp.pm line 314.\n
Also ist es kein Syntaxfehler im Script (scheint mir zumindest).
Jetzt stellt sich mir die Frage, woran liegts? Mach ich doch was falsch und komme einfach nicht drauf? Oder funktioniert CGI::Carp unter mod_perl2 und den gegebeben Gesichtspunkten einfach nicht? (Wenn dem so ist, dann dürfte das doch auch gerne in der Doku drinstehen ;) ).
Vielen Dank für die Aufmerksamkeit,
Sven
[Nachtgrag]
Grade viel mir auf, dass mit dem Eintrag im Error-Log doch was nicht stimmt. Und zwar sieht ein Eintrag von CGI::Carp nach einem die eines normalen CGI-Scripts (also kein mod_perl) so aus:
[Tue Dec 20 20:18:16 2005] [error] [client 127.0.0.1] [Tue Dec 20 20:18:16 2005] test.cgi: upsss...going down! at E:/cgi-bin/test.cgi line 4.
Das was unter mod_perl2 im Error-Log landet sieht für mich jetzt so aus, als würde CGI::Carp selbst die'en allerdings nicht mit einer für mich relevanten Message sondern dummerweise mit der Message, die ich in meinem gewollten die() Aufruf übergeben habe :/\n\n
<!--EDIT|GH@NDI|1135106321-->