HILFE! Programm läuft nicht auf Apache!
Sven Wagener
- webserver
Hallo Forumler!
Diese Meldung steht in der httpd.error_log:
[error] [client 192.168.3.13] Premature end of script headers: /usr/local/httpd/cgi-bin/anzeigepr
Beschreibung:
In C geschriebene CGI (Fertig kompiliert für Linux mit GNU) Kann irgendwie nicht angesprochen werden.
Wer kann mir weiterhelfen? Was besagt diese Meldung?
[error] [client 192.168.3.13] Premature end of script headers: /usr/local/httpd/cgi-bin/anzeigepr
Wer kann mir weiterhelfen? Was besagt diese Meldung?
Dein Programm gibt keinen gueltigen Header aus.
cu,
Peter
Dein Programm gibt keinen gueltigen Header aus.
Ist damit das Content-Type: text/html gemeint?
Ist damit das Content-Type: text/html gemeint?
Hast Du das "magische" \n\n nach ContentType ausgegeben:
print "Content-type: text/html\n\n";
Gruß Frank
Hast Du das "magische" \n\n nach ContentType ausgegeben:
print "Content-type: text/html\n\n";
Ja! Ich hab den Skript / das Programm aber in C geschrieben und mit gnu Kompiliert!
Das sieht dann etwa so aus:
printf("Content-Type: text/html\n\n");
Dann kommt der Rest der HTML!
Hi,
eine etwas seltsame vermutung von mir:
hast du über den browser auch das kompilierte programm angesprochen, oder den source?
(zur kontrolle: das kompilierte programm heisst, wenn nicht per command-line mit -o geändert "a.out")
printf("Content-Type: text/html\n\n");
funktioniert nämlich einwandfrei, wenn du vorher nichts ausgibst.
Bis dann
gero
hast du über den browser auch das kompilierte programm angesprochen, oder den source?
(zur kontrolle: das kompilierte programm heisst, wenn nicht per command-line mit -o geändert "a.out")
Ich habe das Programm vorher mit dem Befehl
gcc anzeigepr.cpp -o anzeigepr.cgi
kompiliert. Ich habe dies auch ohne die CGI Dateiendung versucht! Ich habe das programm auch ausgeführt und es klappt in der Linux Konsole!
Trotzdem Danke!
Ich habe das Programm vorher mit dem Befehl
gcc anzeigepr.cpp -o anzeigepr.cgi
kompiliert. Ich habe dies auch ohne die CGI Dateiendung versucht!
Ohne ".cgi" erkennt der Apache es bei der üblichen Konfiguration nicht als cgi-File, das bringt also nichts, eher im Gegenteil.
Ich habe das programm auch ausgeführt und es klappt in der Linux Konsole!
Fehlen evtl. irgendwelche Rechte?
Nicht immer werden CGIs mit dem Telnet-User gestartet (suwrapper), sondern manchmal auch mit irgendeinem generellen Web-User.
Möglicherweise tritt auch ein Folgefehler (z.B. fehlende Datenbank/File-Zugriffsrechte) auf, bevor der Header ausgegeben wird?
Probier' doch mal eine test.cgi mit dem folgenden Inhalt:
#!/bin/sh
echo "Content-type: text/html\n\n"
./anzeigepr.cgi 2> errors.txt
HTH,
Mirko
Fehlen evtl. irgendwelche Rechte?
Ich hab die Rechte zuerst auf 755 gesetzt. die Funktionierten dann aber nicht. Nun habe ich die Rechte via KDE alle angekreutzt. Die abfrage per HTML Formular funktioniert nun (Es werden Datensätze in eine Textdatei geschrieben). Diese Datensätze werden mittels eines Programms ausgelesen. und zurück an den Browser gesendet. Dann folgt nun auch ein Fehler. Obwohl ich alle Rechte gesetzt habe, nun ein weiterer Fehler:
malformed header from script. Bad header=Sven;Wagener;20
Im Terminal führt sich das Programm richtig aus!
Danke trotzdem! Sven.
Zunächst war es ein Fehler, beim Zugreifen auf eine Datei, in der Daten geschrieben werden. Die Rechte fuer diese Datei mussten gesetzt werden.
Anschliessend war noch ein Programmfehler zu beheben, da ein Apache ja immer das Content-Type haben will! Ich hab zwar gedacht, dass er diese bekommt (hat er ja auch) aber zuerst hatte ich noch alte versuchs printf`s in den ersten Zeilen Stehen. Vorher auf OmniHTTPd (WinNT) hat es ja geklappt. Ein Windows http server kann sowas verarbeiten.
Nunja, jetzt bin ich schlauer!
DANKE AN ALLE!
MfG Sven
Ein Windows http server kann sowas verarbeiten.
Eine schöne Ausrede für Deinen Programmierfehler.
Wenn Du jemals einen anderen Content-Type als HTML haben willst und dann hoffst, daß der Windows-Server auch das errät, dann wirst Du viel, viel Ärger beim Suchen haben.
Ein Windows http server kann sowas verarbeiten.
Eine schöne Ausrede für Deinen Programmierfehler.
Wenn Du jemals einen anderen Content-Type als HTML haben willst und dann hoffst, daß der Windows-Server auch das errät, dann wirst Du viel, viel Ärger beim Suchen haben.
Möglicherweise nimmt der OmniHTTP einfach text/html (oder text/plain, wird ja von den Browsern eh meistens nicht unterschieden), wenn kein Content-type vorhanden ist. Zum Debuggen sicher 'ne feine Sache, aber zweifellos nicht ganz im Sinne der cgi-Spezifikation...
Mit Windows hat das nichts zu tun, der Apache für Windows ist da genauso "pingelig", wahrscheinlich sogar der IIS.
Bye,
Mirko
Mit Windows hat das nichts zu tun, der Apache für Windows ist da genauso "pingelig", wahrscheinlich sogar der IIS.
Das war ja nicht auf Windows, sondern auf den Omni HTTPD Server bezogen! Ich bin nun wirklich kein WINDOWS FAN!!!!!! Ich meinte nur damit, daß es vorher vom Omni HTTPd Server ohne Probleme geschluckt wurde.
Ausserdem war ich gerade beim Umstieg auf den Apache Webserver und war den Windows Webserver gewohnt. Konnte ja nicht ahnen, dass alles daran scheitert! Egal. Seht mein versehentliches "Windows Lob" als Mißvertändnis an!
Bis später, Sven!