mikrocontroller.net

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


Autor: LinuX007 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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):

#include <stdio.h>
#include <stdlib.h>
/* Die Kopfzeile eines Standard-HTML-Dokuments
 * titel: String, der als Titel erscheinen soll
 */
void print_html_header(char *titel) {
   printf("<html><head>\n");
   printf("<title>%s</title>\n",titel);
   printf("</head><body><pre>\n");
}
/* Das Ende eines HTML-Dokuments */
void print_html_end(void) {
   printf("</pre></body></html>\n");
}
/* Damit überhaupt ein HTML-Dokument ausgegeben wird */
void print_header(void) {
   printf("Content-Type: text/html\n\n");
}
int main(void) {
   char *p;
   print_header();
   print_html_header("Wer bin ich?");
   p = getenv("HTTP_USER_AGENT");
   if(p!=NULL)
      printf("Sie browsen mit : %s\n",p);
   else
      printf("Konnte HTTP_USER_AGENT nicht ermitteln!\n");
   print_html_end();
   return EXIT_SUCCESS;
}


Woran kann das liegen?

Danke!

Autor: Tobi H. (tobi-) Benutzerseite
Datum:

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

Autor: LinuX007 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kannst du mir näher erläutern was da falsch ist?!

Autor: LinuX007 (Gast)
Datum:

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

Autor: Florian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: LinuX007 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: LinuX007 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
was meinst du mit execute-attribut?!

Autor: LinuX007 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Thomas W. (thomas_v2)
Datum:

Bewertung
0 lesenswert
nicht 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".

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> was meinst du mit execute-attribut?!

Das, was Thomas hier beschreibt:

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

Autor: Johnny (Gast)
Datum:

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

Autor: Johnny (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: LinuX007 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Tim (Gast)
Datum:

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

Weiterhin viel Erfolg!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.