CHris08156 Geschrieben 18. Januar 2005 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
Wolle Geschrieben 18. Januar 2005 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
CHris08156 Geschrieben 19. Januar 2005 Autor Geschrieben 19. Januar 2005 wir haben die Änderungen vorgenommen, jedoch ohne Ergebnis Zitieren
CHris08156 Geschrieben 19. Januar 2005 Autor 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
Wolle Geschrieben 19. Januar 2005 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
CHris08156 Geschrieben 20. Januar 2005 Autor 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
kills Geschrieben 20. Januar 2005 Geschrieben 20. Januar 2005 vielleicht die Header mit "\n" anstatt "\r\n" terminieren? Zitieren
DevilDawn Geschrieben 20. Januar 2005 Geschrieben 20. Januar 2005 Meist hilft ein Blick in das error.log Zitieren
CHris08156 Geschrieben 20. Januar 2005 Autor 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
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.