Re: ich verzweifle an der cgi konfig von apacje 1.3.14
hi, was sagt den das errorlog vom apache, ist bei derartigen Fehlern ein top anfangspunkt. ist das skript ausführbar? sind evtl. DOS Zeilenumbrüche im script? stimmt der pfad im Script kopf? stimmen die zugriffsrechte? der tom -- GMX - Die Kommunikationsplattform im Internet. http://www.gmx.net GMX Tipp: Machen Sie Ihr Hobby zu Geld bei unserem Partner 1&1! http://profiseller.de/info/index.php3?ac=OM.PS.PS003K00596T0409a
Hallo Tom und Liste
was sagt den das errorlog vom apache, ist bei derartigen Fehlern ein top anfangspunkt.
das ist das file /var/log/httpd/error.log? dort steht "premature end of script headers" da ich aber cgi nicht selber programmieren kann sagt mir das nicht viel.
ist das skript ausführbar? kann ich das an der konsole testen?
sind evtl. DOS Zeilenumbrüche im script? weiss nicht, das script läuft bei einem kollegen, der hat aber den IIS von MS (ich wollte ihm beweisen dass das linux auch kann...grummel)
stimmt der pfad im Script kopf? du meinst den zu perl? dort steht "/usr/bin/perl" kann ich irgendwie feststellen wo mein perl sitzt? brauchts einen "trailing slash?"
stimmen die zugriffsrechte? ja die hab ich als erstes geprüft als es nicht ging.
der tom
Grüsse Marius
Hallo Marius, das sind die unterschiedlichen Zeilenumbrüche schuld, denke ich mal. Der GWD Text Editor kann beispielsweise direkt als Unix/Linux Datei gespeichert werden, dann sollte das klappen. ausserdem gib mal "type perl" ein, dann wirst du sehen, wo das liegt (meist /usr/bin/perl). gruß sebastian
hallo sebastian und liste der pfad stimmt zu perl, das cgi hab ich in midnighcommander editiert, könnte das das problem sein? gruss marius
Hallo Marius,
das sind die unterschiedlichen Zeilenumbrüche schuld, denke ich mal. Der GWD Text Editor kann beispielsweise direkt als Unix/Linux Datei gespeichert werden, dann sollte das klappen. ausserdem gib mal "type perl" ein, dann wirst du sehen, wo das liegt (meist /usr/bin/perl).
gruß sebastian
From: "Marius Appenzeller"
ist das skript ausführbar? kann ich das an der konsole testen?
Geh in das Verzeichniss und gibt chmod 755 name_des_scriptes ein, dann isses ausführbar.
sind evtl. DOS Zeilenumbrüche im script? weiss nicht, das script läuft bei einem kollegen, der hat aber den IIS von MS (ich wollte ihm beweisen dass das linux auch kann...grummel)
Prüf zuerst, ob das Script als solches läuft. Geh in das Verzeichniss, gib ein: perl -c name_das_scripts Dann wird es getestet, aber nicht ausgeführt.
stimmt der pfad im Script kopf? du meinst den zu perl? dort steht "/usr/bin/perl" kann ich irgendwie feststellen wo mein perl sitzt? brauchts einen "trailing slash?"
Ja, den brauchst du. perl findest du mit whereis perl Aber /usr/bin/perl sollte stimmen. (Sag ich jetzt mal aus´m Kopf) Ich würde mal vermuten, die Zeilenumbrüche sind falsch. Du solltest sie mal setzen, der Befehl ging hier desöfteren durch die Liste, ich kenne ihn nicht, weil meine Editoren auf Mac und Windows das von vornherein richtig machen. Übrigens, falls es dich aufmuntert: Du hast Recht. Linux kann das besser als der IIS. Ich habe bei uns in der Firma dahingehend umgestellt, weil IIS einfach nervig war. Übrigens ist die Sache mit den cgis dort auch nur etwas einfacher, aber auch nicht simpel. Gruß, Ratti
Hallo alle (zurueckschreiber und liste) :-)
Geh in das Verzeichniss und gibt chmod 755 name_des_scriptes ein, dann isses ausführbar. ok das war es und ist es jetzt sicher :-)
Prüf zuerst, ob das Script als solches läuft. Geh in das Verzeichniss, gib ein: perl -c name_das_scripts Dann wird es getestet, aber nicht ausgeführt. oha... hier stimmt was nicht, folgender fehler wird ausgegeben:
Bareword found where operator expected at card.cgi line 1, near "/usr/bin" (missing operator before bin?) syntax error at card.cgi line 1 near "/usr/bin" "use" not allowed in expression at card.cgi line 16, at end of line card.cgi had compilation errors was könnte das auf deutsch heissen? wenn wirklich was mit den zeilenenden nicht stimmt, welcher editor (der bei suse 7.1 dabei ist nehm ich da?)
stimmt der pfad im Script kopf? du meinst den zu perl? dort steht "/usr/bin/perl" kann ich irgendwie feststellen wo mein perl sitzt? brauchts einen "trailing slash?"
mit trailing slash würde der pfad so heissen: /usr/bin/perl/ ohne /usr/bin/perl da perl ja ein file und kein verzeichnis ist tippe ich auf die 2. variante, nicht?
Übrigens, falls es dich aufmuntert: Du hast Recht. Linux kann das besser als der IIS. Ich habe bei uns in der Firma dahingehend umgestellt, weil IIS einfach nervig war. Übrigens ist die Sache mit den cgis dort auch nur etwas einfacher, aber auch nicht simpel. danke :-)
gruss marius
From: "Marius Appenzeller"
Prüf zuerst, ob das Script als solches läuft. Geh in das Verzeichniss, gib ein: perl -c name_das_scripts Dann wird es getestet, aber nicht ausgeführt. oha... hier stimmt was nicht, folgender fehler wird ausgegeben:
Bareword found where operator expected at card.cgi line 1, near "/usr/bin" (missing operator before bin?) syntax error at card.cgi line 1 near "/usr/bin" "use" not allowed in expression at card.cgi line 16, at end of line card.cgi had compilation errors
was könnte das auf deutsch heissen? wenn wirklich was mit den zeilenenden nicht stimmt, welcher editor (der bei suse 7.1 dabei ist nehm ich da?)
Ah ja. Das heisst zunächst mal, du kannst aufhören, an deinem System zu schrauben. Bereits dein Skript hat (einen) Fehler. Ohne dein Script zu kennen geht es aber erstmal nicht weiter. Ich bin mir auch nicht sicher, inwieweit das hier On Topic ist. Das du einen Fehler bereits in Zeile 1 erhältst, könnte auf das Zeilen-Ende-Problem hindeuten (Versuch immer, zuerst den ersten Fehler loszuwerden. Alle weiteren sind häufig folgefalsch, weil die Syntax aus dem Ruder gelaufen ist.) Steht bei dir in der ersten Zeile #!/usr/bin/perl ??? Genau so, und nicht anders? Wenn ja, dann bliebe wohl nur noch das Zeilenende... Ich zitiere aus meinem Archiv eine Mail von Berhard Walle vom 17.7.2001:
Könnte es vielleicht sein, dass Du diese zwischenzeitlich mit einem Windows-Editor bearbeitet hast? Dann sind die Zeilenumbrüche falsch. Lösung:
recode cp1252..latin1 test.cgi
Nicht selbst getestet. Gruß, Ratti
hallo liste danke ratti für den tipp...aber....
Ich zitiere aus meinem Archiv eine Mail von Berhard Walle vom 17.7.2001:
recode cp1252..latin1 test.cgi
wenn ich den befehl recode -cp 1252..latin1 card.cgi eingebe erhalte ich folgende meldung: recode: card.cgi failed: ambiguous output in CR-LF..data aslo soviel ich jetzt vestanden habe, hat er tatsaechlich probleme mit der zeilenschaltung... aber wieso korrigiert er das nicht? dazu wollte ich diesen befehl ja einsetzen. kann es sein, dass noch parameter zu recode fehlen? ich sehe ich bin hier im moment in einer akuten lernphase.:-) (bin ich ja immer wenns um linux geht) bin für jeden tip in dieser richtung dankbar. gruss marius
From: "Marius Appenzeller"
wenn ich den befehl recode -cp 1252..latin1 card.cgi eingebe erhalte ich folgende meldung:
recode: card.cgi failed: ambiguous output in CR-LF..data
aslo soviel ich jetzt vestanden habe, hat er tatsaechlich probleme mit der zeilenschaltung... aber wieso korrigiert er das nicht? dazu wollte ich diesen befehl ja einsetzen. kann es sein, dass noch parameter zu recode fehlen?
Hallo, Wie man das mit Linux-Bordmitteln erledigt, weiss ich leider nicht. Ich schreibe meine cgis am Mac (BBedit) und unter Windows (UltraEdit). Beide bieten die Möglichkeit, im "richtigen" Format zu speichern, und mein Webserver ist mit dem Fileserver identisch. Wenn du dein cgi per ftp hochlädst, mußt du übrigens auch darauf achten, daß dein ftp-client richtig konfiguriert ist. Das ist z.B. bei WSftp von Haus aus nicht der Fall. Dateien mit den Endungen .pl und .cgi müssen immer im ASCII-Modus hochgeladen werden, dabei werden die Zeilenenden automatisch richtig hinkonvertiert. Solange bis dir jemand sagt, wie man das von Linux aus macht, kannst du die Datei ja per ftp auf deinen Server packen. :-) Gruß, Ratti
On Son, 22 Jul 2001 at 16:15 (+0200), Ratti wrote: [nach Deinem Namen hatten Dich IIRC schon ein paar Leute hier gefragt - bist Du im RL auch so unhöflich?]
From: "Marius Appenzeller"
wenn ich den befehl recode -cp 1252..latin1 card.cgi eingebe erhalte ich folgende meldung:
recode: card.cgi failed: ambiguous output in CR-LF..data
aslo soviel ich jetzt vestanden habe, hat er tatsaechlich probleme mit der zeilenschaltung... aber wieso korrigiert er das nicht? dazu wollte ich diesen befehl ja einsetzen. kann es sein, dass noch parameter zu recode fehlen?
Wie man das mit Linux-Bordmitteln erledigt, weiss ich leider nicht. [...]
cat datei | perl -ne ´s/\r//; print;´ >neue_datei sollte helfen und die CR verschwinden lassen. Wenn nicht, dann wäre eine Kostprobe eines Scripts (per PM!) mal angebracht. Jan
On Son, 22 Jul 2001, Jan Trippler wrote: [CR\LF nach LF konvertieren]
cat datei | perl -ne ´s/\r//; print;´ >neue_datei
Jan, Jan, Jan. Jetzt bekommst du nicht nur einen Useless use of cat award von mir, sondern auch gleich noch den "Kanonen auf Spatzen" *eg* das cat: perl ... < datei > neue_datei das perl: tr -d '\r' < datei > neue_datei *scnr* -dnh (P.S: der tr-Befehl steht als 'dos2unix' (oder so) im Kofler... -- Listen, three eyes, don't you try to outweird me. I get stranger things than you free with my breakfast cereal. -- Zaphod Beeblebrox
On Son, 22 Jul 2001 at 23:45 (+0200), David Haller wrote:
On Son, 22 Jul 2001, Jan Trippler wrote: [CR\LF nach LF konvertieren]
cat datei | perl -ne ´s/\r//; print;´ >neue_datei
Jan, Jan, Jan. Jetzt bekommst du nicht nur einen Useless use of cat award von mir, sondern auch gleich noch den "Kanonen auf Spatzen" *eg*
Ich wollte nur mal schauen, ob Du aufpasst ;-)
das cat:
perl ... < datei > neue_datei
Du machst ´ne Eingabeumleitung, ich mache eine (nur eben über eine Pipe). Gut, da läuft ein Prozess mehr - ich bin da nicht so knauserig *g*
das perl:
tr -d '\r' < datei > neue_datei
Ich war mir nicht sicher, ob das klappt (und zu faul, es auszuprobieren).
(P.S: der tr-Befehl steht als 'dos2unix' (oder so) im Kofler...
Ich würde nie auf die Idee kommen, den tr an dieser Stelle zu suchen. Ich würde mit man tr nachschauen :-) Jan
On Fre, 27 Jul 2001, Jan Trippler wrote:
On Son, 22 Jul 2001 at 23:45 (+0200), David Haller wrote:
On Son, 22 Jul 2001, Jan Trippler wrote: [CR\LF nach LF konvertieren]
cat datei | perl -ne ´s/\r//; print;´ >neue_datei
Jan, Jan, Jan. Jetzt bekommst du nicht nur einen Useless use of cat award von mir, sondern auch gleich noch den "Kanonen auf Spatzen" *eg*
Ich wollte nur mal schauen, ob Du aufpasst ;-)
Apropos: Irgendwo hab ich mal scripts gefunden, bei denen auch ein dos2unix dabei war (ohne pod) enthaelt das: ==== #!/usr/bin/perl -pi.dos s/\r\n/\n/g; ==== *g*
das cat:
perl ... < datei > neue_datei
Du machst ´ne Eingabeumleitung, ich mache eine (nur eben über eine Pipe). Gut, da läuft ein Prozess mehr - ich bin da nicht so knauserig *g*
Naja, ich ja fuer _einzelne_ aufrufe auch nicht, aber erstens ist das eben wirklich ein Klassiker, und in for f in `find /usr/src/linux -type f`; do cat "$f" | grep 'fuck'; done duerfte sich das cat bemerkbar machen. Ja, ich kenne das -exec von find, aber manchmal geht das halt nicht. Und die Schleife koennte ja auch ein 'for i in `seq 0 99`; do ... ; done sein. Generell gilt IMO, dass man sich angewoehnen sollte cat nur wenn noetig zu verwenden...
das perl:
tr -d '\r' < datei > neue_datei
Ich war mir nicht sicher, ob das klappt (und zu faul, es auszuprobieren).
Ja. Das klappt (bei Textdateien!). Ich hab's ja auch aus dem Kofler. ;)
(P.S: der tr-Befehl steht als 'dos2unix' (oder so) im Kofler...
Ich würde nie auf die Idee kommen, den tr an dieser Stelle zu suchen. Ich würde mit man tr nachschauen :-)
Logisch. Aber ich hab halt den Kofler gelesen und das drin gefunden. Davor hab ich recode verwendet... Ach ja, ich hab das von oben mal laufen lassen (und ja, ich greppe oefters durch die Kernelquellen, das Beispiel ist also sinnvoll und mit -exec grep -H 'muster' {} \; bekommt man auch noch die Dateinamen, in dem Fall ist das 'cat' recht weit hergeholt. $ time for f in `find /usr/src/linux/ -type f`; do\ cat "$f" | grep -H 'fuck'; done real 2m17.012s user 0m54.420s sys 1m1.180s $ time for f in `find /usr/src/linux/ -type f`; do grep -H 'fuck' "$f"; done real 1m24.978s user 0m25.770s sys 0m29.460s Hum, knapp 40% schneller... Und ne neue sig hab ich grad auch noch gefunden :) -dnh P.S: Wer meine ueberlangen Zeilen quotet und nicht passend umbricht ist doof *eg* -- If you don't see why, please stay the fuck away from my code. -- Paul "Rusty" Russel, in /usr/src/linux/Documentation/DocBook/kernel-locking.tmpl
participants (7)
-
David Haller
-
Jan.Trippler@t-online.de
-
Marius Appenzeller
-
Raettchen@t-online.de
-
ratti
-
Sebastian Wolfgarten
-
thomas koenig