CGI Funktioniert nicht, Fehlermeldung Apache!
Hallo! Gerade habe ich ein CGI Test Programm geschrieben und habe folgende Antwort vom Server (SUSE 6.2) erhalten. Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request. Please contact the server administrator, root@localhost and inform them of the time the error occurred, and anything you might have done that may have caused the error. More information about this error may be available in the server error log. Apache/1.3.6 Server at Server1.www.danys-web.de Port 80 was bedeutet diese Meldung vom Apache und was kann ich ändern, übrigens unten steht noch das CGI Programm. MfG Daniel EMAIL: Daniel.Bladeck@asamnet.de #include <stdio.h> #include <stdlib.h> void main (void) { char *name, *alter, *drink, *remote_host; printf ("Content-type: test/plain\n\n"); uncgi(); name = gentv ("WWW_name"); alter = gentv ("WWW_alter"); drink = gentv ("WWW_drink"); remote_host = gentv ("REMOTE_HOST"); if (name == NULL) { printf("Sie wollen mir wohl ihren Namen nicht verraten?") printf("Ich weiss aber dass sie von $REMOTE_HOST kommen.") } else { printf("Hallo %s -- schoen sie zu sehen. /n, name); if (age == NULL) { printf("Schaehmen sie sich für ihr Alter?\n"); } else { printf("Sie sind %s Jahre alt.\n, alter); } printf("\n"); if (drink == NULL) { printf("Ich glaube sie mögen keine Flüssigkeiten.\n"); } else { printf("Sie trinken gern: "); while (*drink != '\0) { if (*drink == '#') { printf(" "); } else { printf ("%c", *drink); } ++ drink; } printf ("\n"); } exit(0); } --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
On 30-Jan-00 Daniel Bladeck wrote:
More information about this error may be available in the server error log.
Was will Dir dieser Satz sagen...? Richtig. Du sollst ins error log Deines Webservers schauen - da steht möglicherweise mehr Information. Ich hab mir das prg nicht angesehen, aber vermutlich ist der ausgegebene CGI-Header falsch oder das Prg spuckt eine Fehlermeldung aus, bevor dieser ausgegeben wird. - Siehe /var/log/httpd.errors oder /usr/local/httpd/log/errors - je nach Apache-Installation <g>. -- =========================================================== Erhard Schwenk - alias Bitrunner =)B==o) =========================================================== No Spam replies please. --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
Daniel Bladeck wrote:
printf ("Content-type: test/plain\n\n");
wie ich noch jung und unerfahren war, hat das glaube ich noch te_x_t/plain geheissen ... ;-) ciao, adalbert --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
Michelic Adalbert schrieb in 0,4K (13 Zeilen):
Daniel Bladeck wrote:
printf ("Content-type: test/plain\n\n");
wie ich noch jung und unerfahren war, hat das glaube ich noch te_x_t/plain geheissen ... ;-)
Na, das ist der neue M$-Standard :-) Aber wieso ein .cgi ueberhaupt in C? IMO ist dafuer Perl wesendlich geeigneter ... -Wolfgang --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
Wolfgang Weisselberg wrote:
Aber wieso ein .cgi ueberhaupt in C? IMO ist dafuer Perl wesendlich geeigneter ...
Ich schreibe die meisten funktional orientierten cgis in bash-Script ;-) Die Sprache ist egal, solange man das Programm mit stdin und stdout bedienen kann. Gruß Raphael Becker -- Online-Doku: http://home.pages.de/~online-doku Gesucht - Gefunden: Linux-Anleitungen Fehlt was? Dann nix wie her mit dem URL mailto:online-doku@gmx.de --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
* Raphael Becker wrote on Fri, Feb 04, 2000 at 18:54 +0100:
Wolfgang Weisselberg wrote:
Aber wieso ein .cgi ueberhaupt in C? IMO ist dafuer Perl wesendlich geeigneter ...
Die Sprache ist egal, solange man das Programm mit stdin und stdout bedienen kann.
Wenn einem die Sicherheit völlig egal ist, stimmt das, ansonten Perl, weil es den "taint" mode kennt, und "strict"er programmierbar ist. oki, Steffen -- Dieses Schreiben wurde maschinell erstellt, es trägt daher weder Unterschrift noch Siegel. --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
At 15:01 30.01.00 +0100, Daniel Bladeck wrote:
Hallo!
Gerade habe ich ein CGI Test Programm geschrieben und habe folgende Antwort vom Server (SUSE 6.2) erhalten. Internal Server Error
in der error.log vom Apache sollte mehr dazu stehen,
printf ("Content-type: test/plain\n\n");
das sollte auch evtl. text/plain heissen ? -- und servus <o) Hans Klein /\\ _\_v /* http://www.net-con.net */ --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
Am Son, 30 Jan 2000 schrieb Daniel Bladeck: Sorry, wenn ich das sage, aber naja, da stimmt so einiges nicht: 1. "void main (void)" und "exit(0);" ist eigentlich schon mal ein Fehler. Als Rückgabewert definierst Du void, also kein Rückgabewert, lieferst aber dann doch 0. Also Rückgabeparamter int setzen. 2. Die CGI-Paramter werden doch an die Main-Funktion über- geben, mit "void main (void)" verweigerst Du aber die Annahme, oder seh ich das falsch. Mach mal ein "anständiges" main, also: int main( int argc, char *argv[] ) 3. "printf ("Content-type: test/plain\n\n");" mach mal aus dem test ein text. So, vielleicht hilft das schon ein Stück. -- Machs gut Manfred http://www.iiv.de/schwinde/buerger/tremmel/ http://www.knightsoft.de , http://www.knightsoft-net.de --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
On 30-Jan-00 Manfred Tremmel wrote:
1. "void main (void)" und "exit(0);" ist eigentlich schon mal ein Fehler. Als Rückgabewert definierst Du void, also kein Rückgabewert, lieferst aber dann doch 0. Also Rückgabeparamter int setzen.
Eigentlich nicht. void main(void) ist natürlich Quatsch. Aber exit() ist ein Funktionsaufruf und hat nix mit dem Rückgabewert von main() zu tun - auch wenn es den Rückgabewert des Programms für Linux setzt. Den Rückgabewert einer Funktion definiert man dagegen mit dem Schlüsselwort "return". Gute C-Compiler verlangen in einer Funktion, die als "int main()..." deklariert ist, auch ein return - und man kann exit() dann nur zusätzlich verwenden oder muß halt void main() schreiben, was nicht dem ANSI-Standard entspricht. Richtig wäre IMHO: int main(int argc, char **argv, char **envp( { ... return 0; }
2. Die CGI-Paramter werden doch an die Main-Funktion über- geben, mit "void main (void)" verweigerst Du aber die Annahme, oder seh ich das falsch.
Das siehst Du u.U. falsch. Wenn sein CGI-Programm mit der GET-Methode arbeitet, kriegt er die CGI-Parameter aus stdin. Allerdings sollte er CONTENT_LENGTH auswerten, und dazu bräuchte er envp.
Mach mal ein "anständiges" main, also: int main( int argc, char *argv[] )
int main(int argc, char **argv, char **envp) wäre korrekt. Nur dann kann er CONTENT_LENGTH und die CGI-Parameter auslesen.
3. "printf ("Content-type: test/plain\n\n");" mach mal aus dem test ein text.
Das sollte er allerdings. -- =========================================================== Erhard Schwenk - alias Bitrunner =)B==o) =========================================================== No Spam replies please. --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
participants (8)
-
a.michelic.suse@aon.at
-
beckerra@rumms.uni-mannheim.de
-
Daniel.Bladeck@asamnet.de
-
eschwenk@fto.de
-
hansi.klein@net-con.net
-
Manfred.Tremmel@iiv.de
-
steffen@dett.de
-
weissel@ph-cip.uni-koeln.de