Phillip: CGI und Apache

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

  1. 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. 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

      1. 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.

        1. Hi ihr zwei,

          ähm, habe ich da was missverstanden, oder ist gar kein Perl installiert?

          Viele Grüße
          Torsten

          1. 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.

            1. 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

        2. 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!

          --
          Never argue with an idiot. He will lower you to his level and then
          beat you with experience.
          1. 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.

            1. 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

              --
              Sie sollten aber ihre Politik nicht auf die Masse der Uninformierten abrichten, dann hätten sie Bundeskanzerlin werden sollen. Sie sind nun mal für die Drogenkonsumenten verantwortlich, und von denen glaubt ihnen keiner auch nur ein Wort. Das ist leider Fakt.
                  -- Peter Hansen in einem Posting an die Drogenbeauftragte der Bundesregierung Marion Caspers-Merk
                  (http://www.cannabislegal.de/politik/mcm-spdfraktion2.htm)
      2. 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

        --
        Sie sollten aber ihre Politik nicht auf die Masse der Uninformierten abrichten, dann hätten sie Bundeskanzerlin werden sollen. Sie sind nun mal für die Drogenkonsumenten verantwortlich, und von denen glaubt ihnen keiner auch nur ein Wort. Das ist leider Fakt.
            -- Peter Hansen in einem Posting an die Drogenbeauftragte der Bundesregierung Marion Caspers-Merk
            (http://www.cannabislegal.de/politik/mcm-spdfraktion2.htm)