Zum Inhalt springen

ApacheKonfigurationsProblem


Empfohlene Beiträge

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:

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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).

Link zu diesem Kommentar
Auf anderen Seiten teilen

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...