Forum: PC-Programmierung CGI -Datei öffnet nicht im Browser


von LinuX007 (Gast)


Lesenswert?

Hallo!

Wie ich in meinem anderen Thread schon beschrieben habe, möchte ich es 
nun nochmal "veröffentlichen", an all die Linux-Cracks unter euch ;)

:::


Nun habe ich aber noch folgendes Problem auf meinem Apache-Webserver,
vielleciht kann mir hierzu jemand eine Antwort geben:

Ich habe nun in eine Datei namens "teste_skript.c", die in einem von mir
erstellten Ordner "cgi-bin" auf meinem Webserver liegt versucht, diese
Datei mit dem Befehl "gcc -o
/var/www/apache2-default/cgi-bin/teste_skript.c
/var/www/apache2-default/cgi-bin/teste_skript.cgi" zu kompilieren.

Dann kommt folgender Fehler: "gcc: No such file or directory", "gcc: no
input files".

Hier der Code des "teste_skript.c" (es ist ein Codebeispiel des Buches
"C von A-Z" von Gailieocomputing):
1
#include <stdio.h>
2
#include <stdlib.h>
3
/* Die Kopfzeile eines Standard-HTML-Dokuments
4
 * titel: String, der als Titel erscheinen soll
5
 */
6
void print_html_header(char *titel) {
7
   printf("<html><head>\n");
8
   printf("<title>%s</title>\n",titel);
9
   printf("</head><body><pre>\n");
10
}
11
/* Das Ende eines HTML-Dokuments */
12
void print_html_end(void) {
13
   printf("</pre></body></html>\n");
14
}
15
/* Damit überhaupt ein HTML-Dokument ausgegeben wird */
16
void print_header(void) {
17
   printf("Content-Type: text/html\n\n");
18
}
19
int main(void) {
20
   char *p;
21
   print_header();
22
   print_html_header("Wer bin ich?");
23
   p = getenv("HTTP_USER_AGENT");
24
   if(p!=NULL)
25
      printf("Sie browsen mit : %s\n",p);
26
   else
27
      printf("Konnte HTTP_USER_AGENT nicht ermitteln!\n");
28
   print_html_end();
29
   return EXIT_SUCCESS;
30
}

Woran kann das liegen?

Danke!

von Tobi H. (tobi-) Benutzerseite


Lesenswert?

Repost und der gcc-Aufruf ist immer noch falsch. Guck dir mal an, wie 
die Argument übergeben werden

von LinuX007 (Gast)


Lesenswert?

kannst du mir näher erläutern was da falsch ist?!

von LinuX007 (Gast)


Lesenswert?

Was mich außerdem stutzig macht ist, dass in der /etc/apache2/httpd.conf 
nichts drinsteht!

von Florian (Gast)


Lesenswert?

Hallo,

wie wäre es, wenn du einfach die Argumente vertauschst?
gcc -o teste_skript.cgi teste_skript.c
Fehlermeldung lesen und verstehen!

Grüße
Florian

von LinuX007 (Gast)


Lesenswert?

ok das kompilieren hat funktioniert. Es liegt nun im Ordner "cgi-bin" 
das File "test.cgi".


Das problem ist nun, dass ich bei der eingabe im Browser von einem 
Client von "http://localhost/cgi-bin/test.cgi"; die Meldung kriege, die 
"test.cgi" zu downloaden, anstatt sie im Browserfenster zu betrachten.
Es soll ja schließlich eine ausführbare CGI sein und sich nicht als 
"textdatei" öffnen / downloaden lassen.



Danke!

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Tja, ist denn der von Dir verwendete Webserver so konfiguriert, daß im 
genannten Verzeichnis liegende Dateien als CGI-Funktionen ausgeführt 
werden? Soferns ein Linux ist, ist denn das "execute"-Attribut gesetzt?

von LinuX007 (Gast)


Lesenswert?

was meinst du mit execute-attribut?!

von LinuX007 (Gast)


Lesenswert?

ich weiß ja nicht mal - da die httpd.conf leer ist - in welchem 
Verzeichnis die ausführbaren Dateien für CGI liegen sollen!


Es ist LInux

von Thomas W. (thomas_v2)


Lesenswert?

Ich habe dein Programm gerade unter Debian Etch getestet - bei mir 
funktioniert es.

Auführbar machen der Datei mit z.B.
> chmod 755 cgitest.cgi

Unter Debian liegt der Ordner in:
> /usr/lib/cgi-bin/

Such doch mal nach "cgi-bin".

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

> was meinst du mit execute-attribut?!

Das, was Thomas hier beschreibt:

> Auführbar machen der Datei mit z.B.
> > chmod 755 cgitest.cgi

von Johnny (Gast)


Lesenswert?

Manchmal gibts auch probleme wenn im CGI Windows Zeilenende a la 
<CR><LF> vorkommen. Am besten durch Unixmässige <LF> ersetzen.

von Johnny (Gast)


Lesenswert?

Oh sorry, mein posting ist für binary CGIs wie in deinem Fall nicht 
relevant. Würde sich z.B. auf ein Shell oder Perl script beziehen.

von LinuX007 (Gast)


Lesenswert?

Ok vielen lieben Dank, es hat geklappt. Nur noch eine Frage:

Da ja wie oben schon erwähnt in meiner HTTPD.conf nichts drinsteht, wo 
kann ich den "Pfad" der auszuführenden CGI-Skripte ändern, damit er 
nicht unter "/usr/lib/cgi-bin" sondern unter 
"/var/www/apache2-default/cgi-bin" liegt?


Danke!

von Tim (Gast)


Lesenswert?

definiere einfach einen ScriptAlias:
1
ScriptAlias /cgi-bin/ /var/www/apache2-default/cgi-bin/
Du solltest dich dringend mit der Docu vom Apache auseinander setzen.

Weiterhin viel Erfolg!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.