"Internal Server Error" aber Script angeblich fehlerfrei??
Sonia
- perl
Hallo,
ich habe mir ein Script zusammengebastelt
das Einträge in eine guest.dat schreiben soll.
Laut Syntaxchecker meines Providers (1&1)
ist das Script voll funktionsfähig.
Leider kann das aber nicht ganz stimmen, denn ich bekomme
einen 500er (Internal Server Error) Fehler und
ich habe (wie immer) schon alles nachgeschaut von dem ich irgendwo in
selfhtml hinweise gefunden habe was die ursache sein könnte,
aber keine mögliche fehlerquelle traf zu.
Alle Rechte sind richtig
also vermute ich einen Fehler im Script, den ich aber auch
nicht finden kann weil ich nicht aufs log zugreifen kann.
also muß ich im dunkeln stochern und finde bisher einfach nichts.
weiß hier zufällig einer wo der fehler im script sein könnte?
Danke schonmal
Gruß
Sonia
Hier das ganze Script:
#! /usr/bin/perl
use strict;
use CGI;
use Fcntl ':flock';
my $cgi = new CGI;
use CGI::Carp qw(fatalsToBrowser);
chdir("/homepages/mydir/htdocs/wdesign/guest/");
open(DATEI, "<guest.dat") || die "Datei nicht gefunden";
my @Zeilen = <DATEI>;
close(DATEI);
my @NeuerEintrag;
my @NeueZeilen;
my $Username;
my $Kommentartext;
push(@NeuerEintrag, "<!-- EINTRAG [".$cgi->param($Username)."] Datum-->\n");
push(@NeuerEintrag, "<table border="1"><tr>\n");
push(@NeuerEintrag, "<th>von:</th><td>".$cgi->param($Username)."</td>\n");
push(@NeuerEintrag, "<th>am:</th><td>Datum</td>\n");
push(@NeuerEintrag, "</tr><tr>\n");
push(@NeuerEintrag, "<td colspan="2">".$cgi->param($Kommentartext)."</td>\n");
push(@NeuerEintrag, "</tr></table>\n");
foreach(@NeuerEintrag)
{
push(@NeueZeilen,$_);
}
open(DATEI, ">>guest.dat") || die "Datei nicht gefunden";
flock(DATEI,LOCK_EX);
print DATEI @NeueZeilen;
flock(DATEI, LOCK_UN);
close(DATEI);
Hi,
ich habe mir ein Script zusammengebastelt
das Einträge in eine guest.dat schreiben soll.
Laut Syntaxchecker meines Providers (1&1)
ist das Script voll funktionsfähig.
Nein. Ein Syntaxchecker kann niemals die Funktionsfähigkeit eines Scripts testen, sondern nur die korrekte Schreibweise.
#!/usr/bin/perl
use strict;
my $x = 0;
my $y = 1;
my $z = $y / $x;
wird (vermutlich) durch den Syntaxchecker kommen.
Funktionsfähig ist es aber nicht, da das Teilen durch 0 nicht möglich ist.
Alle Rechte sind richtig
also vermute ich einen Fehler im Script, den ich aber auch
nicht finden kann weil ich nicht aufs log zugreifen kann.
also muß ich im dunkeln stochern und finde bisher einfach nichts.
weiß hier zufällig einer wo der fehler im script sein könnte?
Hast Du lokal keinen Webserver mit Perl, um zu testen?
Hast Du das Script auf der Konsole ausprobiert?
cu,
Andreas
Hi,
[...]
Funktionsfähig ist es aber nicht, [...]
ja schön, ich rede auch von dem CGI Output Monitor
und der gibt aus es wäre alles ok
und ansonsten sehe ich im moment keine andere überprüfungsmöglichkeit.
zumindest hat er angemeckert das ich die variablen
xy vorher deklarieren muß, das waren dann aber auch schon alle
fehler die ich bekam.
Hast Du lokal keinen Webserver mit Perl, um zu testen?
nein
Hast Du das Script auf der Konsole ausprobiert?
nein, ich habe nichts installiert.
hi,
dein script ist schon etwas seltsam:
es liest nirgendwo einen Input und es schickt nichts aber auch gar nichts zum Browser ;-)
Rolf
Hi,
muß es das?
das soll es nämlich gar nicht
aber das hab ich auch schonmal (ohne erfolg) probiert
gruß
Sonia
Hi Sonia,
muß es das?
das soll es nämlich gar nicht
aber das hab ich auch schonmal (ohne erfolg) probiert
der Server erwartet von Deinem Skript zumindest die Ausgabe eines korrekten HTTP-Headers.
Was genau Du damit bewirken willst, mußt Du schon selber wissen - "nichts" ist eine legale Antwort, muß aber in HTTP trotzdem erst mal korrekt umgesetzt werden.
Viele Grüße
Michael
Danke!
der Server erwartet von Deinem Skript zumindest die Ausgabe eines korrekten HTTP-Headers.
das war genau der richtige Hinweis
es funktioniert jetzt.
Gruß Sonia