Eric Norbert Falbe: HTTP 500 - Internal server error

Wenn ich das folgende Perl-Script aus den Perl Tutorial der SELFHTML Seiten hier starten will, bekomme ich immer eine Fehlermeldung.
Es ist von folgender Seite: http://de.selfhtml.org/perl/sprache/cginotwendig.htm#inhalte

#!/usr/bin/perl -w  
  
use strict;  
use CGI::Carp qw(fatalsToBrowser);  
  
my $Einleitung = "Es geht auch so!";  
  
print "Content-type: text/html\n\n";  
  
print <<"ENDE";  
<html><head><title>Testausgabe</title></head><body>  
<h1>$Einleitung</h1>  
<p>Der Vorteil bei dieser Form ist, dass man viel HTML-Code  
auf einmal erzeugen kann, ohne einen einzigen weiteren print-Befehl  
in Perl zu notieren. Praktisch beispielsweise auch zum Ausgeben  
von JavaScript:</p>  
<script type="text/javascript">  
document.write("<p>Und die Adresse dieser HTML-Datenquelle lautet: ");  
document.write(document.URL+"<\/p>");  
</script>  
</body></html>  
ENDE

Ich bekomme immer einen HTTP 500 - Internal server error
Auf der Browserseite steht folgendes:

The page cannot be displayed
There is a problem with the page you are trying to reach and it cannot be displayed.
--------------------------------------------------------------------------------
Please try the following:
Open the eric.ismywebsite.com home page, and then look for links to the information you want.
Click the  Refresh button, or try again later.
Click  Search to look for information on the Internet.
You can also see a list of related sites.
HTTP 500 - Internal server error
Internet Explorer

Woran kann es liegen? Was koennte ich tun?
Alle anderen Beispiele gehen bei mir prima.

  1. Ich bekomme immer einen HTTP 500 - Internal server error
    Auf der Browserseite steht folgendes:

    The page cannot be displayed
    There is a problem with the page you are trying to reach and it cannot be displayed.

    Ich tippe auf fehlende Dateirechte

    mfg Beat

    --
    ><o(((°>           ><o(((°>
       <°)))o><                     ><o(((°>o
    Der Valigator leibt diese Fische
    1. Kann nicht sein, denn ich habe bei allen Scriptdateien die Rechte zum ausfuehren aktiviert. Bei den anderen klappt es ja auch.
      Liegt es nicht vielleicht doch am Script selber?
      Hat sich da im Tutorial ein Fehler eingeschlichen?

      1. Kann nicht sein, denn ich habe bei allen Scriptdateien die Rechte zum ausfuehren aktiviert. Bei den anderen klappt es ja auch.
        Liegt es nicht vielleicht doch am Script selber?
        Hat sich da im Tutorial ein Fehler eingeschlichen?

        Ich habe dein Script getestet. Es gibt keine warning.

        mfg Beat

        --
        ><o(((°>           ><o(((°>
           <°)))o><                     ><o(((°>o
        Der Valigator leibt diese Fische
        1. Wo hast du das Script getestet? Auf einem Server?
          Auf dem Server, auf den ich es hochgeladen habe, klappt es jedenfalls nicht. Schau unter http://eric.ismywebsite.com/Programmieren/Perl/cginotwendig2.pl selber nach!

  2. Hallo,
    Hast Du Zugriff auf die Error-Logs Deines Webservers? Wenn ja ist das oft ein guter Anhaltspunkt, denn "Internal Server Error" ist imer ein Zeichen dafür, dass IRGENDWAS nicht funktioniert - was steht meistens im Error-log.

    Folgende Dinge fallen mir spontan ein:

    1.) Das Perl-Script hat nicht die richtigen rechte (keine Ausführrechte)
    2.) Du hast das CGI-Modul welches Du benutzt, nicht installiert.

    Hast Du mal probiert, das Skript auf der Kommandozeile zu starten?
    Was passiert da?

    Viele Grüße,
    Jörg

    1. Ich schau mal nach Error-Logs; in dem Verzeichniss, wo die Perl-Scripte sind, ist jedenfalls keines.
      Meine Perl-Script haben alle Rechte zum Ausfuehren aktiviert.
      Welche CGI-Module nutzt mein Script denn?
      Wie testet man ein Skript durch die Kommandozeile?

      1. Ich habe verschiedene Logdateien in einem Verzeichniss Namens tmp gefunden. Darunter auch awstats Dateien. Aber irgednwei blicke ich da nicht so ganz durch. Wie sollten denn Logs von Perl heissen?

        1. Ich habe verschiedene Logdateien in einem Verzeichniss Namens tmp gefunden. Darunter auch awstats Dateien. Aber irgednwei blicke ich da nicht so ganz durch. Wie sollten denn Logs von Perl heissen?

          error.log. Es sind die Apache standard error.log

          Falls du separate Perl Errorausgabe wünscht, dann z.B. so:

          BEGIN {
              use CGI::Carp qw(carpout);
              open(LOG, ">error.txt")
                 or  die "Unable to append to error.txt: $!\n";
              carpout(*LOG);
          }

          mfg Beat

          --
          ><o(((°>           ><o(((°>
             <°)))o><                     ><o(((°>o
          Der Valigator leibt diese Fische
          1. Das bringt bei mir gar nichts. Ich bekomme dieselbe Fehlermeldung angezeigt.

            1. Hallo Eric!

              Das bringt bei mir gar nichts. Ich bekomme dieselbe Fehlermeldung angezeigt.

              Beats Tipp ist auch nicht dazu gedacht, den Fehler zu beheben, sondern eine Error-Logfile anzulegen, in die Dein Skript seine Fehler schreibt und aus der Du herauslesen kannst, was schief gegangen ist.

              Hast Du meine erste Antwort schon beachtet (das Skript darf nicht mit »ENDE« enden, sonder muss mindestens noch eine leere Zeile enthalten)?

              Viele Grüße aus Frankfurt/Main,
              Patrick

              --
              _ - jenseits vom delirium - _

                 Diblom   [link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash]
              J'ai 10 ans! | Achtung Agentur! | Nichts ist unmöglich? Doch! | Heute schon gegökt?
              1. Der Editor schneidet die letzten leeren Zeilen automatisch weg.
                Ich habe zwei Kommentarzeilen eingefuegt und jetzt funktioniert alles.

                Danke Patrick Andrieu!

                P.S. Ich frage mich wo so eine unsinnige Programmierregel herkommt.
                Das kann wohl nur an den Leuten liegen, die die Sprache konzeptioniert haben.

                1. P.S. Ich frage mich wo so eine unsinnige Programmierregel herkommt.
                  Das kann wohl nur an den Leuten liegen, die die Sprache konzeptioniert haben.

                  Das ist wohl keine unsinnige Programmieregel, sondern wird wohl eher am Parser liegen, der ansonsten nicht das Ende findet. Steht übrigens auch genauso in der Dokumentation:

                  If the terminating identifier is on the last line of the program, you must be sure there is a newline after it; otherwise, Perl will give the warning Can't find string terminator "END" anywhere before EOF....

                  Die Warnmeldung hättest du gesehen, wenn du das Programm mal in der Konsole resp. DOS-Fenster gestartet hättest.

                  Struppi.

                2. Hallo Eric!

                  Danke Patrick Andrieu!

                  Gerne geschehen!

                  P.S. Ich frage mich wo so eine unsinnige Programmierregel herkommt.
                  Das kann wohl nur an den Leuten liegen, die die Sprache konzeptioniert haben.

                  Hier frage ich mich eher, welcher Editor-Programmierer sich anmaßt, seine User so zu bevormunden: Wenn ich eine letzte leere Zeile will, dann will ich eine letzte leere Zeile haben und nicht, dass der Editor mir sie beim Abspeichern einfach stibizt. Kommt der Mensch, der Deinen Editor programmiert hat, aus der Windows-Schmiede? Würde mich nicht wundern, so wie Vista gemacht ist :)

                  Viele Grüße aus Frankfurt/Main,
                  Patrick

                  --
                  _ - jenseits vom delirium - _

                     Diblom   [link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash]
                  J'ai 10 ans! | Achtung Agentur! | Nichts ist unmöglich? Doch! | Heute schon gegökt?
  3. Hallo Eric!

    Wenn ich das folgende Perl-Script aus den Perl Tutorial der SELFHTML Seiten hier starten will, bekomme ich immer eine Fehlermeldung.

    #!/usr/bin/perl -w

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

    my $Einleitung = "Es geht auch so!";

    print "Content-type: text/html\n\n";

    print <<"ENDE";

    ENDE

      
    Ist das hier die allerletzte Zeile im Skript? Wenn ja, hau noch einen Hartreturn rein: Der Heredoc-Begrenzer (hier: ENDE) darf nicht auf der letzten Zeile stehen, es muss immer ein Return danach eingegeben werden.  
      
      
    Viele Grüße aus Frankfurt/Main,  
    Patrick
    
    -- 
    \_ - jenseits vom delirium - \_  
    ![](http://www.atomic-eggs.com/fuernA.jpg)  
       [Diblom](http://www.atomic-eggs.com/pics/diblom.png)   [[link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash](http://www.atomic-eggs.com/)]  
    [J'ai 10 ans!](http://www.atomic-eggs.com/wae/wae_10.shtml#a5) | Achtung [Agentur](http://www.atomic-eggs.com/cwi/cwi_5.shtml#a5)! | Nichts ist unmöglich? [Doch!](http://www.atomic-eggs.com/cwi/cwi_4.shtml) | [Heute](http://www.atomic-eggs.com/cgi-bin/date_today.pl) schon ge[gök](http://goek.atomic-eggs.com/goek_goek.html)t?