In Datei schreiben - Im DOS-Modus gehts, am Browser nicht :-(
Bernhard Peissl
- perl
Hallo!
Wie kann es sein, dass wenn ich die Parameter für ein Perl-script in der DOS-Konsole händisch eingebe alles funktioniert, aber sobald ich das selbe am Browser versuche, nämlich Daten in einem Formular abschicke, dann meldet er mir meinen unglaublich-vielsagenden-lieblings-PERL-Fehler(500-Internal Server Error)
Hier in Auschnitten mein Script:
// $bereich_info = "../kurse/".$lva_bereich."/".$lva_gruppe."/".$lva_gruppe.".info";
// open(INFOFILE, ">>$bereich_info") die "can't open $bereich_info $! \n";
// print INFOFILE $outline;
// close(INFOFILE);
... Die Parameter (lva_*) werden richtig übergeben, habs mir ausgeben lassen! Syntaktisch ist auch alles o.k.! Funktioniert ja auch, aber halt nur im DOS :-(
Mein Server ist ein Apache auf Win98.
Ich hoffe ihr könnt mir da weiterhelfen!
Liebe Grüsse
Bernhard
Nachtrag:
Was wichtiges hab ich vergessen: Ich habe 2 Unterverzeichnisse im cgi-bin: admin und kurse. In admin liegt das Perl-script, von dem die Rede ist!
/cgi-bin/
/admin/
/kurse/
/ausbildung/
/.../
/.../
/weiterbildung/
/.../
Danke,
Bernhard
Hi,
Wie kann es sein, dass wenn ich die Parameter für ein Perl-script in der DOS-Konsole händisch eingebe alles funktioniert, aber sobald ich das selbe am Browser versuche, nämlich Daten in einem Formular abschicke, dann meldet er mir meinen unglaublich-vielsagenden-lieblings-PERL-Fehler(500-Internal Server Error)
das kann 1000 Gründe haben, weshalb Du mit der Fehlersuche im Error-Log beginnen solltest. Prinzipiell vermute ich erst mal, daß Dein Script nicht als CGI-Script konzipiert ist, also entweder Ein- und/oder Ausgabe nicht die Eigenschaften des CGI-Kontextes beachten (Stichworte HTTP-Header, URL-Encoding).
Nach einer Analyse des Error-Logs kannst Du vielleicht eher abschätzen, woran es liegt. Im Forums-Archiv findest Du zu den einzelnen möglichen Fehlern eine Menge.
Cheatah
Hallo cheatah!
das kann 1000 Gründe haben, weshalb Du mit der Fehlersuche im
Error-Log beginnen solltest.
Hab ich gemacht, und verdammt: mein zweit-lieblings-perl-fehler: "Premature end of script header"
Was ich also alles probiert habe:
Das selbe script hat ja bereits funktioniert. Habe mir zuerst nur die Parameter ausgeben lassen. danach habe ich die Datei-Öffnen-Funktion s.o. dazugeschrieben, und ab dann liefs nur noch im DOS-Fenster. Der Perl-Interpreter liegt bei mir unter C:\Perl also heisst die erste Zeile
// #! perl -w
Habe im Archiv viele Threads zu genau dem Problem gefunden, aber leider nur viele Vorschläge (die meisten kamen übrigens von dir ;-)) worans liegen könnte, aber anscheinend hat keiner so richtig funktioniert. Ich sehe schon schwarz! Werde ich meinen Computer auf die Müllhalde schmeissen müssen, und bis an mein Lebensende Erbsen in Sibirien ernten ;-) Soll das meine Zukunft sein ??? Hilfeeeee !!!
Scherz ohne! Ich hab öfter gelesen, dass es irgendwas mit Sonderzeichen / Zeilenumbrüchen zu tun hat. Und dass man im ASCII-Modus speichern soll. Meine Frage: Wie sieht man ersteres, und wie macht man zweiteres?
Prinzipiell vermute ich erst mal, daß Dein Script nicht als CGI-
Script konzipiert ist, also entweder Ein- und/oder Ausgabe nicht
die Eigenschaften des CGI-Kontextes beachten (Stichworte HTTP-
Header, URL-Encoding).
Ausgeben tu ich vorerst noch nix. Das script soll nur mal an eine Datei was anhängen!
Liebe Grüsse
Bernhard
Hallo,
Ausgeben tu ich vorerst noch nix. Das script soll nur mal an eine Datei was anhängen!
Aber ein CGI_Script _muß_ was ausgeben, sonst denkt sich der Webserver "Ui, da ist was schief gegangen, wiel wenn nichts kommt, dann ist das blöde scripts sicher über den jordan gegangen, und ich geb mal lieber eine 500er Meldung aus, damit der Anwender wenigstens irgendwas sehen kann!".
Also solltest Du zumindest einen Header und eine MEldung ausgeben, daß Du erfolgreich in die Datei schreiben konntest.
Grüße
Klaus
Hallo Klaus!
Aber ein CGI_Script _muß_ was ausgeben, sonst denkt sich der
Webserver "Ui, da ist was schief gegangen, wiel wenn nichts
kommt, dann ist das blöde scripts sicher über den jordan
gegangen, und ich geb mal lieber eine 500er Meldung aus, damit
der Anwender wenigstens irgendwas sehen kann!".
Vielleicht sollten wir beim Herrn Perl dann mal anrufen, und fragen,
ob man statt dem 500er nicht z.B.: eine Claudia Schiffer "ausgeben"
könnte, wäre auf jedenfall netter als nur statt _irgendwas_ eine so
grausliche Fehlermeldung ans Auge des Betrachters rauszuschicken ;-)
Also solltest Du zumindest einen Header und eine MEldung
ausgeben, daß Du erfolgreich in die Datei schreiben konntest.
<emotion class="embarassed">
Es ist mir jetzt zu blöd geworden. Hab mir den Code ausgedruckt, die
Datei gelöscht, alles wieder eingetippt und unter demselben Namen
wieder abgespeichert!
</emotion>
Danach (leider erst) hab ich deine Nachricht gelesen. Nun ja, du
hattest recht. Der Fehler kommt nur, wenn ich nix ausgebe. Wenn ich
ihm nur irgendwas gebe, woran er knabbern kann, dann folgt der
Browser auch brav, aber wehe man liefert keinen Zoll ab => 500 und
der Spass ist vorbei :-(
Danke jedenfalls für deine Hilfe
Bernhard
Hallo Bernhard,
Vielleicht sollten wir beim Herrn Perl dann mal anrufen, und fragen,
ob man statt dem 500er nicht z.B.: eine Claudia Schiffer "ausgeben"
Da ist aber nicht die Perle des Systems verantworlich, daß es gar zu gruaslich wird, sondern Meister Webserver himself. Wenn man dem nur genau erklärt, _was_ höflich ist, dann sollte es auch netter werden in der weiten welt. Aber wenn sie, die PErl nämlich, sich nicht gar zu wortkarg verhält, dann ist ja eigentlich egal, wie rüpelhaft er sein würde, weil dann kommt er ja nicht mehr zu Wort ;-)
Grüße
Klaus