CGI Programm unter NT/Netscape und Linux/Apache
Edmund Schöpf
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;
}
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
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
printf("%s\n\n",
"Content-Type:text/html");
mach daraus mal printf("Content-type: text/html\n\n");
Vielleicht geht es dann.
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