CHris08156 Geschrieben 18. Januar 2005 Teilen Geschrieben 18. Januar 2005 Ich hab ein ApacheKonfigurationsProblem! Der ApacheServer ist auf einem Rechner im Netzwerk installiert, nennen wir ihn mal Server. Ich arbeite auf folgender Maschiene: shell> version Machine hardware: sun4u OS version: 5.8 Processor type: sparc Hardware: SUNW,UltraAX-e2 The following components are installed on your system: Sun WorkShop TeamWare 2.1 Sun WorkShop TeamWare 2.1 Sun WorkShop FileMerge 3.1 Ich habe folgende HTML-Datei geschrieben: /home/thiede/public_html/index.html: <HTML> <BODY> <H1>Terminverwaltung</H1> <FORM NAME="Login" ACTION="http://xeon4/~thiede/cgi-bin/cgi.exe"> <TABLE BORDER=0 CELLPADDING=4 CELLSPACING=3 STYLE="page-break-before: always"> <COL WIDTH=0> <COL WIDTH=0> <TR> <TD COLSPAN=2> <P>Login</P> </TD> </TR> <TR> <TD> <P>Username</P> </TD> <TD> <P><INPUT TYPE=TEXT NAME="Username" SIZE=15></P> </TD> </TR> <TR> <TD> <P>Password</P> </TD> <TD> <P><INPUT TYPE=TEXT NAME="Password" SIZE=15></P> </TD> </TR> <TR> <TD> <P><INPUT TYPE=submit NAME="Login" VALUE="Login"></P> </TD> <TD> <P><INPUT TYPE=BUTTON NAME="Cancel" VALUE="Cancel"></P> </TD> </TR> </TABLE> </FORM> <P><BR><BR> </P> </BODY> </HTML> Ich hab den Kopf mal weggelassen. dazu habe ich eine c++-Datei geschrieben und compelliert /home/thiede/public_html/cgi-bin/cgi.exe #include <iostream> #include <string.h> int main(int argc, char *argv[]) { char *input = ""; char *work[10][2]; int i, j, n, m; cin >> input; cout << "<html><body>"; char delims[] = "&"; char *result = NULL; result = strtok( input, delims ); k=0; while( result != NULL ) { work[k][0]=result; result = strtok( NULL, delims ); k++; } n=k; for (k=0;k<n;i++) { char delims[] = "="; char *result = NULL; result = strtok( work[k][0], delims ); j=0; while( result != NULL ) { //printf( "result is \"%s\"\n", result ); work[k][j]=result; result = strtok( NULL, delims ); j++; } } cout << "</html></body>"; return 1; } Ich starte also die index.html: http://server/~thiede/ [index.html] [optional] Wenn ich auf den Button der html-Datei klicke, sollte eigentlich das cgi-exe-file ausgeführt werden. statt dessen kann ich die Datei cgi.exe herunterladen. Welche Einstellungen muss ich im ApacheServer ändern? Mein Ausbilder wusste nicht weiter :mod: Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Wolle Geschrieben 18. Januar 2005 Teilen Geschrieben 18. Januar 2005 Wenn ich auf den Button der html-Datei klicke, sollte eigentlich das cgi-exe-file ausgeführt werden. statt dessen kann ich die Datei cgi.exe herunterladen. Welche Einstellungen muss ich im ApacheServer ändern? Ein Unix kann mit ner Windowsdatei nichts anfangen. Die Datei muß unter Solaris kompiliert werden. Die Endung sollte .cgi sein, kann aber in der httpd.conf geändert werden. Der Eintrag ist AddHandler cgi-script .cgi Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
CHris08156 Geschrieben 19. Januar 2005 Autor Teilen Geschrieben 19. Januar 2005 wir haben die Änderungen vorgenommen, jedoch ohne Ergebnis Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
CHris08156 Geschrieben 19. Januar 2005 Autor Teilen Geschrieben 19. Januar 2005 Es klappt inzwischen schon etwas besser: ich habe zu begin meine cpp-file folgendes eingefügt. cout << "Content-Type: text/html\r\n\r\n"; eine ausführbare Datei sieht jetzt so aus: #!/bin/sh echo -e "Content-Type: text/html\n\n" echo "" echo "" echo "<html><body>" echo Hallo echo "</body></html>" Ich bekomme folgende Fehlermeldung: Server error! The server encountered an internal error and was unable to complete your request. Error message: Premature end of script headers: cgi.cgi If you think this is a server error, please contact the webmaster. Error 500 Was kann ich tun? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Wolle Geschrieben 19. Januar 2005 Teilen Geschrieben 19. Januar 2005 Ich bekomme folgende Fehlermeldung: Die Fehlermeldung sagt, das der Header fehlt. Schau mal hier rein, vielleicht hilft dir das weiter: http://www.yolinux.com/TUTORIALS/LinuxTutorialC++CGI.html eine ausführbare Datei sieht jetzt so aus: Öhm... Das ist ein Shellscript und hat nicht wirklich was damit zu tun. Shellscripte kannst du nicht auf dem Webserver ausführen (Ausnahme ist, wenn du die von einem CGI oder PHP Script ausführen läßt). Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
CHris08156 Geschrieben 20. Januar 2005 Autor Teilen Geschrieben 20. Januar 2005 ich hab dann doch wieder die cig.cgi datei genommen (compellierte c++ datei). In der BErufsSchule auf nem Windows system hat es mit der Datei geklappt, also kann doch mit der Ausgabe (erstellung der html-seite) nichts falsch sein, oder? auf der tutorial-seite kann man ein paar header-dateien downloaden... damit kann man dann einen html-header generieren. aber dieser Header ist doch eigentich optional. und wie gesagt unter windows hats ja auch funktioniert... :confused: #include <iostream> #include <string.h> int main(int argc, char *argv[]) { char input[255] = "\0"; char *work[10][2]; int i, j, n, m; for (i=0; i<4; i++) { for (n=0; n<2; n++) { work[i][n] = new char[50]; work[i][n] = "\0"; } } //i.e.: Kapital=100&Prozent=5 //cout << "input: "; cin >> input; //cout << input; cout << "Content-Type: text/html\r\n\r\n"; cout << "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\"" << "\"http://www.w3.org/TR/REC-html40/strict.dtd\">"; cout << "<html lang=\"en\" dir=\"LTR\">\r\n\r\n"; cout << "<html>\n<body>"<<endl; //parser char delims[] = "&"; char *result = NULL; result = strtok( input, delims ); i=0; while( result != NULL ) { //printf( "result is \"%s\"\n", result ); work[i][0]=result; //strcpy(work[i][0],result); cout << "work: " << work[i][0] << endl; result = strtok( NULL, delims ); i++; } n=i; for (i=0;i<n;i++) { char delims[] = "="; char *result = NULL; result = strtok( work[i][0], delims ); j=0; while( result != NULL ) { //printf( "result is \"%s\"\n", result ); work[i][j]=result; //strcpy(work[i][j],result); result = strtok( NULL, delims ); j++; } } for (i=0;i<n;i++) { //i.e.: Kapital: 100 Prozent=5 cout << work[i][0] << ": " << work[i][1] <<endl; } cout << "</html>\n</body>\r\n\r\n"<<endl; return 1; } Was ist daran denn so falsch? Könnte es doch am Apache liegen? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 20. Januar 2005 Teilen Geschrieben 20. Januar 2005 vielleicht die Header mit "\n" anstatt "\r\n" terminieren? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
DevilDawn Geschrieben 20. Januar 2005 Teilen Geschrieben 20. Januar 2005 Meist hilft ein Blick in das error.log Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
CHris08156 Geschrieben 20. Januar 2005 Autor Teilen Geschrieben 20. Januar 2005 mein Project funktioniert jetzt. Wir haben den Apache auf einem Windows-Rechner installiert und jetzt greif ich irgendwie (frag mich nicht) darauf zu. jetzt muss ich halt nur immer meine c++ datei mit Visual-studio compellieren aber ok, immerhin funkt es Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.