Avatar billede Swift Praktikant
18. september 2003 - 11:55 Der er 23 kommentarer og
1 løsning

Fyldestgørende fejlmeddelelser på Apache ved perl CGI scripts

På en Redhat 9 har jeg problemer med at perl CGI scripts i tilfælde af fejl kun returnerer:
-----------------------------------------------------
Server error!
The server encountered an internal error and was unable to complete your request.
Error message:
Premature end of script headers: test.cgi
If you think this is a server error, please contact the webmaster
Error 500
-----------------------------------------------------

Jeg har før (på FreeBSD) brugt:
use CGI qw(fatalsToBrowser);
For at få meddelelse om hvilken linie det går galt på...
Men det kan jeg ikke på Redhat.


Er der nogle gode ideer, til hvordan jeg får fyldestgørende fejlmeddelelser fra mine perl CGI scripts??
Avatar billede mfalck Praktikant
18. september 2003 - 12:00 #1
jeg tror at problemet er at den ikke fortolker perl-scriptet ordenligt - har du sikret dig at #! /path/to/perl peger korrekt, at det kan oversætte og lign ?
Avatar billede mfalck Praktikant
18. september 2003 - 12:06 #2
evt skal du starte med at skrive

my $query = new CGI;
print $query->start_html("test");

Premature end of script headers: test.cgi - plejer at betyde at du får skrevet noget ud inden den sender de korrekte http-headers.
Avatar billede mfalck Praktikant
18. september 2003 - 12:07 #3
ellers plejer jeg at lave en

use FileHandle
my $fh = new FileHandle ("> /tmp/out.txt");
print $fh "start \n";

og så printe debug info ud den vej.
Avatar billede Swift Praktikant
18. september 2003 - 12:36 #4
Nej scriptet virker fint!!

Men hvis jeg fx indsætter en nul division mellem to print linier så får jeg "Premature end of script headers"

Der ville jeg jo hellere have haft en "ERROR IN LINE: xx" !
Avatar billede mfalck Praktikant
18. september 2003 - 12:43 #5
jeg har brugt CGI qw(fatalsToBrowser); flere gange under redhat, så jeg er sikker på at den virker.
Avatar billede Swift Praktikant
18. september 2003 - 12:58 #6
Her er min fil:
--------------------------------------
#!/usr/bin/perl
#

use CGI qw(fatalsToBrowser);

print "Content-type: text/html \n\n";
print "<HTML>";
print "<BODY>";
print "Hejsa";
#print 27/0;
print "</BODY>";
print "</HTML>";
--------------------------------------

Som koden ser ud ser jeg "Hej" i min browser.
Hvis fjerner # foran "print 27/0" så får jeg "Premature end of script headers" fejlen!
Avatar billede mfalck Praktikant
18. september 2003 - 13:03 #7
men hvis du fjerner # foran print 27/0 og kører det i hånden så får du også

Illegal division by zero at mfh.pl line 10.
Avatar billede mfalck Praktikant
18. september 2003 - 13:06 #8
#!/usr/bin/perl
#

use CGI::Carp qw(fatalsToBrowser);

her er fejlen !!!!

#die "Bad error here";


print "Content-type: text/html \n\n";
print "<HTML>";
print "<BODY>";
print "Hejsa";
print 27/0 ;
print "</BODY>";
print "</HTML>";
Avatar billede mfalck Praktikant
18. september 2003 - 13:07 #9
use CGI qw(fatalsToBrowser);
use CGI::Carp qw(fatalsToBrowser);
Avatar billede Swift Praktikant
18. september 2003 - 13:13 #10
mfalck: Selv med begge linier er fejlen den samme!

Kan der være noget der er konfigureret på min Apache (Apache/2.0.40) ?
Avatar billede mfalck Praktikant
18. september 2003 - 13:15 #11
hmm .. underligt: jeg får selv

Software error:
Illegal division by zero at mfh.pl line 13.

For help, please send mail to the webmaster (), giving this error message and the time and date of the error.
Avatar billede mfalck Praktikant
18. september 2003 - 13:16 #12
jeg kan ikke forestille mig at det har noget med apache at gøre - det er jo perl som sender svaret.
Avatar billede mfalck Praktikant
18. september 2003 - 13:16 #13
jeg kører med en apache 2.0.47
Avatar billede mfalck Praktikant
18. september 2003 - 13:17 #14
hov - min fejl. jeg ville skrive

hvor du skriver
use CGI qw(fatalsToBrowser);
skal du bruge 
use CGI::Carp qw(fatalsToBrowser);

det var måske lidt kortfattet ;-)
Avatar billede Swift Praktikant
18. september 2003 - 13:57 #15
Stadig samme fejl.....KODE:
-----------------------------------------
#!/usr/bin/perl -w
#

use CGI::Carp qw(fatalsToBrowser);
#use CGI qw(fatalsToBrowser);

print "Content-type: text/html \n\n";
print "<HTML>";
print "<BODY>";
print "Hejsa";
print 27/0;
print "</BODY>";
print "</HTML>";
-----------------------------------------
Avatar billede mfalck Praktikant
18. september 2003 - 14:07 #16
hvilken version af CGI har du installeret ?
Avatar billede mfalck Praktikant
18. september 2003 - 14:08 #17
prøv evt :
#!/usr/bin/perl
Avatar billede Swift Praktikant
18. september 2003 - 14:53 #18
Perl v5.8.0 - jeg går ud fra at den har CGI med...?
Hvordan ser man ellers CGI versionen ?

Uden -w er fejlen der stadig!
Avatar billede mfalck Praktikant
18. september 2003 - 15:24 #19
use CGI;

print $CGI::VERSION;
Avatar billede Swift Praktikant
18. september 2003 - 16:13 #20
CGI version: 2.89
Avatar billede mfalck Praktikant
18. september 2003 - 16:14 #21
hmm ... hvad står der i din log-fil/error-fil ?
Avatar billede mfalck Praktikant
18. september 2003 - 16:15 #22
din version af CGI er nyere end min (2.81)
Avatar billede Swift Praktikant
18. september 2003 - 16:21 #23
[Thu Sep 18 16:20:23 2003] [error] [client 130.225.187.109] Premature end of script headers: test.cgi
[Thu Sep 18 16:20:23 2003] [error] [client 130.225.187.109] Illegal division by zero at /var/www/html/mktest/test.cgi line 22.


Hvorfor kan jeg ikke få det frem på skærmen som HTTP response ???
Avatar billede mfalck Praktikant
18. september 2003 - 17:11 #24
meget mystisk;
når jeg kører din kode fra 18/09-2003 13:57:55 så får jeg svaret ud som det skal.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester