Perl/CGI Internal Server Error

Hallo,
ich bekomme immer folgende Fehlermeldung

The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, root@alpha and inform them of the time the error occurred,
and anything you might have done that may have caused the error.
Premature end of script headers: /usr/local/httpd/cgi-bin/gaestebuch.cgi

Apache/1.3.3 Server at linserv Port 80

Die Perl-FAQ hilft mir auch nicht weiter.
Alle Scripte, an die Daten gesendet werden verursachen diese Meldung. Ich habe dann in der HTML-Seite einmal das Script

printenv

Inhalt:

#!/usr/bin/perl

print „Content-type: text/html\n\n“;
while (($key, $val) = each %ENV) {
print „$key = $val
\n“;
}

aufgerufen, das funktioniert, alle Umgebungsvariablen werden angezeigt.
Kann mir jemand helfen, schön wäre ein allereinfachstes Beispiel.
Ich nutze zwei Rechner Peer to Peer, ein Linux mit Apache und ein Win98.

Danke

The server encountered an internal error or misconfiguration
and was unable to complete your request.
Please contact the server administrator, root@alpha and inform
them of the time the error occurred,
and anything you might have done that may have caused the
error.
Premature end of script headers:
/usr/local/httpd/cgi-bin/gaestebuch.cgi

Error 500 bedeutet irgendwas stimmt in Deinem Perl Script nicht.
Also checken: stimmt der Pfad zu Perl (#!/usr/… )?
Script mal mit perl -cw gaestebuch.cgi auf syntaktische Fehler prüfen.
In jedem Fall im script mal ein use strict; verwenden, das deckt oft bereits eine Menge Probleme auf.

Klaus

Internal Server Error 500

Frage:
Obwohl das Script anderswo funktioniert, bekomme ich bei exit einen Internal Server Error 500… Woran liegt das?

Antwort:
Der Fehler ist meistens, daß die Dateien im DOS-Format abgespeichert und hochgeladen wurden.

Bei Unix-Systemen wird das Zeilenende mit einem Linefeed (ASCII 10) markiert,
bei DOS ist es Carriage Return und Linefeed (ASCII 13 und ASCII 10).
Wenn man das Skript im DOS-Format abspeichert, steht am Ende der ersten Zeile des
Skriptes:
#!/usr/bin/perl^M

Das findet die Shell aber nicht so gibt der Server einen Fehler 500 aus.


Diese Antwort hab ich aus den CGI-FAQs von http://www.exit.de geklaut… vielleicht hilft’s dir ja weiter…

Benny

schaue auch mal wie die Datei raufgeladen wird

die datei sollte im ASCII ins Internet geladen werden und nicht im binary mode.

Generell kann der 500er Error aber alles bedeuten. vielleicht fehlt im script ein ; oder eine klammer oder irgend etwas anderes.

Ingrid

Hallo,

ich nehme mal an, Du verwendest einen Apache als Webserver, oder? Falls ja, findest Du meistens eine genauere Beschreibung des Fehler im Webserver-Log. Das findest Du unter Linux unter:

  • /var/log/httpd.error_log (bei SuSE