Edmund Schöpf: CGI Programm unter NT/Netscape und Linux/Apache

Ich habe aus Lernzwecken ein simples C-Programm geschrieben (kopiert). Wird dieses Programm von einem NT Server (mit Netscape Web-Server) aufgerufen wird ein Fehler erzeugt. Der Netscape 4.5 Browser meldet SERVER ERROR. Auf dem LOG des Netscape Servers finde ich: "... the CGI Program multi.exe did not produce a valid header ...". Das Programm ist als DOS-Programm mit einem Borland C++ Compiler kompiliert worden.
Auf einer Linux-Maschine (mit Apache Server) läuft das Programm einwandfrei:

Für Eure Hilfe bedanke ich mich im voraus
Edmund Schöpf

Hier die Sourcen:

HTML:
<FORM ACTION="http://meinemaschine/cgi-bin/multi.exe">
<P>Please specify the multiplicands:
<INPUT NAME="m" SIZE="5">
<INPUT NAME="n" SIZE="5"><BR>
<INPUT TYPE="SUBMIT" VALUE="Multiply!">
</FORM>

"C": (multi.c)
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char *data;
long m,n;
printf("%s\n\n",
"Content-Type:text/html");
printf("<HTML>\n");
printf("<HEAD><TITLE>Multiplication results</TITLE></HEAD>\n");
printf("<BODY><H3>Multiplication results</H3>\n");
data = getenv("QUERY_STRING");
if(data == NULL)
  printf("<P>Error! Error in passing data from form to script.");
else if(sscanf(data,"m=%ld&n=%ld",&m,&n)!=2)
  printf("<P>Error! Invalid data. Data must be numeric.");
else
  printf("<P>The product of %ld and %ld is %ld.",m,n,m*n);
printf("</BODY></HTML>\n");
return 0;
}

  1. Nur eine Vermutung (bin kein CGI-Profi):

    printf("%s\n\n",
    "Content-Type:text/html");

    Fehlt da nicht ein Leerzeichen hinter dem Doppelpunkt? Oder ist das egal...?

    Gruß,
    Stefan

    1. Nur eine Vermutung (bin kein CGI-Profi):

      printf("%s\n\n",
      "Content-Type:text/html");

      Fehlt da nicht ein Leerzeichen hinter dem Doppelpunkt? Oder ist das egal...?

      Gruß,
      Stefan

      Ich hatte es auch mit einem Leerzeichen zwischen "Content-Type:" und "text/html" versucht. Auf alle Fälle geht es auf dem Linux/Apache auch ohne Leerzeichen

      Auf alle Fälle besten Dank für die Bemühungen.
      Grüße
      Edmund

  2. printf("%s\n\n",
    "Content-Type:text/html");

    mach daraus mal printf("Content-type: text/html\n\n");

    Vielleicht geht es dann.

  3. Hi Edmund!

    Bei mir läuft Dein Prog ohne Probleme, aber...

    Das Programm ist als DOS-Programm mit einem Borland C++ Compiler kompiliert worden.
    Auf einer Linux-Maschine (mit Apache Server) läuft das Programm einwandfrei:

    Genau das dürfte unter Win-NT das Problem sein (hab ich jedenfalls schon
    von mehreren Seiten gehört). Probier mal, es mit einem Microsoft-Compiler
    als 32-Bit Console-Anwendung zu compilieren. Meine Erfahrung zu diesem
    Thema ist, daß der Win-NT Server mit djgpp (gnu-c unter DOS) compilerte Programme nicht
    ausführen mag.

    Viele Grüße!

    Andreas