Sonia: "Internal Server Error" aber Script angeblich fehlerfrei??

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);

  1. 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

    --
    Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
    1. 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.

  2. hi,

    dein script ist schon etwas seltsam:

    es liest nirgendwo einen Input und es schickt nichts aber auch gar nichts zum Browser ;-)

    Rolf

    1. Hi,

      muß es das?
      das soll es nämlich gar nicht
      aber das hab ich auch schonmal (ohne erfolg) probiert

      gruß
      Sonia

      1. 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

        --
        T'Pol: I meant no insult.
        V'Lar: Of course not. You're simply speaking your mind ... as you always have.
        1. 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