CGI und Apache
Phillip
- cgi
Hallo!
Ich erstell gerade eine Seite auf der ein cgi-script eingebaut werden soll. Das hab ich auch getan. Doch wenn ich die Seite per apache auf meinem PC anschauen möchte, wir das CGI-Script nicht angezeigt. Muss man CGI in Apache vielleicht extra aktivieren etc.??? Folgendes habe ich in meine HTML Seite eingebunden:
<!--#include virtual="cgi-bin/countdown.cgi?target=Sep 28"-->
Vielleicht kann mir ja Jemand helfen?
Danke
hallo Phillip,
Ich erstell gerade eine Seite auf der ein cgi-script eingebaut werden soll.
Das tust du höchstwahrscheinlich nicht. Sondern in deiner Seite ist ein Formular enthalten, das auf dem Server ein CGI-Script anstoßen soll, gelle?
Das hab ich auch getan. Doch wenn ich die Seite per apache auf meinem PC anschauen möchte, wir das CGI-Script nicht angezeigt.
Das ist völlig korrekt. CGI-Scripts _dürfen_ nicht angezeigt werden, allerdings sollen sie das Ergebnis ihrer Arbeit an den Server zurückliefern, und der Server soll es dann deinem Browser übergeben.
Muss man CGI in Apache vielleicht extra aktivieren etc.?
Das kommt drauf an, wie dein Server bisher aussieht. Ja, man muß dem Apache mitteilen, daß er CGI-Anforderungen beachten und befolgen soll.
Folgendes habe ich in meine HTML Seite eingebunden:
<!--#include virtual="cgi-bin/countdown.cgi?target=Sep 28"-->
Das ist eine SSI-Anweisung. Weiß denn dein Apache zusätzlich noch, daß er auch SSI können muß?
Und für _solche_ Nachfragen mal was Grundsätzliches:
1. - Ist das ein lokal installierter Apache?
2. - Welches Betriebssystem hast du?
3. - Um welche Apache-Version handelt es sich?
4. - Sind die "Partner" (PHP, PERL und andere) korrekt installiert?
5. - Was sagen die Server-logs aus?
Wenn du _diese_ Informationen mitliefern würdest, könnte man dir möglicherweise mit einem Satz antworten und alles wäre gut. So wie du die Frage formuliert hast, muß man aber mehrere Nachfragen stellen, um dein "Problem" überhaupt erstmal verstehen zu können.
Grüße aus Berlin
Christoph S.
1. - Ist das ein lokal installierter Apache?
JA
2. - Welches Betriebssystem hast du?
Windows 2000
3. - Um welche Apache-Version handelt es sich?
V. 2.0.46
4. - Sind die "Partner" (PHP, PERL und andere) korrekt installiert?
PHP schon; Perl weiss nicht
5. - Was sagen die Server-logs aus?
127.0.0.1 - - [08/Aug/2003:22:04:05 +0200] "GET /cgi-bin/countdown.cgi HTTP/1.1" 404 1196
127.0.0.1 - - [08/Aug/2003:22:04:54 +0200] "GET /cgi-bin/countdown.cgi HTTP/1.1" 404 1196
127.0.0.1 - - [08/Aug/2003:22:05:08 +0200] "GET /countdown.cgi HTTP/1.1" 200 3059
127.0.0.1 - - [08/Aug/2003:22:08:57 +0200] "GET /cgi-bin/countdown.cgi HTTP/1.1" 404 1196
127.0.0.1 - - [08/Aug/2003:22:08:58 +0200] "GET /cgi-bin/countdown.cgi HTTP/1.1" 404 1196
hallo Phillip,
1. - Ist das ein lokal installierter Apache?
JA
Gut.
2. - Welches Betriebssystem hast du?
Windows 2000
Wichtig, das zu wissen.
5. - Was sagen die Server-logs aus?
127.0.0.1 - - [08/Aug/2003:22:04:05 +0200] "GET /cgi-bin/countdown.cgi HTTP/1.1" 404 1196
Das ist ein Ausschnitt aus der "access.log" - und wie sieht der entsprechende Teil in der error.log aus?
Im übrigen bedeutet das, daß dein Server zwar gebeten wurde, aus deinem /cgi-bin-Verzeichnis heraus das Script "countdown.cgi" ausführen zu lassen, daß er es aber nicht zugelassen hat, wahrscheinlich gibt es diese Datei nicht. Dagegen bedeutet
127.0.0.1 - - [08/Aug/2003:22:05:08 +0200] "GET /countdown.cgi HTTP/1.1" 200 3059
daß du in deinem Wurzelverzeichnis (also _nicht_ im cgi-bin) eine Datei mit dem Namen countdown.cgi liegen hast, deren Inhalt auch brav an den Browser ausgeliefert worden ist, was dir aber überhaupt nichts nutzen kann.
Du müßtest dich eventuell erst einmal damit auseinandersetzen, was CGI-Scripts zu tun haben und wie sie mit Hilfe eines Webservers wie z.B. Apache zum Arbeiten veranlaßt werden.
Schau dir dazu einfach die verschiedenen Artikel in http://aktuell.de.selfhtml.org/artikel/server/index.htm, aber besonders auch http://aktuell.de.selfhtml.org/artikel/cgiperl/inbetriebnahme/index.htm an.
Grüße aus Berlin
Christoph S.
Hi ihr zwei,
ähm, habe ich da was missverstanden, oder ist gar kein Perl installiert?
Viele Grüße
Torsten
hallo Torsten,
ähm, habe ich da was missverstanden, oder ist gar kein Perl installiert?
"Perl weiß ich nicht" hat er angegeben. Ich bin darauf noch nicht eingegangen, weil ein CGI-Script nicht zwangsläufig auch ein PERL-Script sein muß - wichtig ist ja bei Fehlern erstmal die Diagnostik, also der Blick in die logs. Wenn er die error.log geliefert hätte, wäre alles klar.
Grüße aus Berlin
Christoph S.
Hi Christoph,
"Perl weiß ich nicht" hat er angegeben.
Daraus schloss ich, dass es evtl. gar nicht installiert ist, denn mir ist bisher noch kein Paket Apache+Perl begegnet.
Ich bin darauf noch nicht eingegangen, weil ein CGI-Script nicht zwangsläufig auch ein PERL-Script sein muß
Ups, da habe ich wohl einen falschen Schluss gezogen, klar ist CGI nicht gleich Perl.
Viele Grüße
Torsten
hi!
Deine Interpretation von Server-Logs lässt etwas zu wünschen übrig.
127.0.0.1 - - [08/Aug/2003:22:05:08 +0200] "GET /countdown.cgi HTTP/1.1" 200 3059
daß du in deinem Wurzelverzeichnis (also _nicht_ im cgi-bin) eine
Datei mit dem Namen countdown.cgi liegen hast, deren Inhalt auch
brav an den Browser ausgeliefert worden ist, was dir aber überhaupt
nichts nutzen kann.
Es bedeutet, dass die URL /countdown.cgi vom Server angefordert
wurde, und er diese erfolgreich ausliefern konnte. Ob der Inhalt
einer entsprechenden Datei ausgeliefert wurde oder ob ein CGI-Skript
ausgeführt wurde, dessen Ergebnisse an den Browser geschickt werden,
kann man an der Zeile nicht erkennen.
bye, Frank!
moin Frank,
Deine Interpretation von Server-Logs lässt etwas zu wünschen übrig.
geringfügig ;-)
127.0.0.1 - - [08/Aug/2003:22:05:08 +0200] "GET /countdown.cgi HTTP/1.1" 200 3059
daß du in deinem Wurzelverzeichnis (also _nicht_ im cgi-bin) eine
Datei mit dem Namen countdown.cgi liegen hast, deren Inhalt auch
brav an den Browser ausgeliefert worden ist
Es bedeutet, dass die URL /countdown.cgi vom Server angefordert
wurde, und er diese erfolgreich ausliefern konnte.
Richtig. Du formulierst es genauer, aber:
Ob der Inhalt einer entsprechenden Datei ausgeliefert wurde oder ob ein CGI-Skript ausgeführt wurde, dessen Ergebnisse an den Browser geschickt werden, kann man an der Zeile nicht erkennen.
Ich nehme meine Formulierung "brav an den Browser ausgeliefert worden ist" zurück und ersetze sie durch "brav an den Server weitergereicht worden ist".
Grüße aus Berlin
Christoph S.
Tach!
Richtig. Du formulierst es genauer, aber:
Was auffallenderweise kein Einzelfall ist. Ich muss schon sagen, fuer jemanden, der bei fast jedem Posting, auf das er antwortet, erstmal selbst minimale Schwaechen im "Wording" korrigiert (gerne auch mal zum schlechteren hin), bevor er dann zur eigentlichen Antwort schreitet oder auch nicht, versuchst Du erstaunlich oft, Kritik an Deinen Aussagen mit "ja ok, das hab ich ungenau formuliert" oder "ja, das habe ich ja gemeint" oder aehnlichem zu relativieren.
So long
Hi!
Aus dem ersten Posting:
<!--#include virtual="cgi-bin/countdown.cgi?target=Sep 28"-->
Hier verbergen sich schon zwei Fehler.
1. Du willst die URL "cgi-bin/countdown.cgi?target=Sep 28" einbinden. Genaugenommen ist das aber keine URL. Leerzeichen sind in URLs naemlich nicht erlaubt. Also schreibe "Sep28" oder "Sep_28" oder irgendwas, aber nicht "Sep 28".
2. Achte unbedingt auf die korrekte SSI-Syntax. vor dem Kommentar-Ende-Zeichen muss unbedingt ein Leerzeichen stehen. Also
<!--#include virtual="cgi-bin/countdown.cgi?target=Sep28" -->
4. - Sind die "Partner" (PHP, PERL und andere) korrekt installiert?
PHP schon; Perl weiss nicht
In welcher Sprache ist das CGI-Script denn geschrieben? Sofern es Perl ist, solltest Du Dir ueber diesen Punkt besser im klaren sein.
5. - Was sagen die Server-logs aus?
127.0.0.1 - - [08/Aug/2003:22:04:05 +0200] "GET /cgi-bin/countdown.cgi HTTP/1.1" 404 1196
127.0.0.1 - - [08/Aug/2003:22:04:54 +0200] "GET /cgi-bin/countdown.cgi HTTP/1.1" 404 1196
127.0.0.1 - - [08/Aug/2003:22:05:08 +0200] "GET /countdown.cgi HTTP/1.1" 200 3059
127.0.0.1 - - [08/Aug/2003:22:08:57 +0200] "GET /cgi-bin/countdown.cgi HTTP/1.1" 404 1196
127.0.0.1 - - [08/Aug/2003:22:08:58 +0200] "GET /cgi-bin/countdown.cgi HTTP/1.1" 404 1196
Also, ein /cgi-bin/countdown.cgi wird nicht gefunden, wohl aber ein /countdown.cgi.
Es sieht ganz so aus, wie wenn Du einfach die falsche URL im #include-Statement angegeben hast.
So long