dieter: CGI Forbidden auf apache2

Hi

Ich hab auf meinem Debian seit langem den Apache2 laufen. jetzt haett ich gern cgi support, und deshalb libapache2-mod-perl2 installiert.

so, wenn ich jetzt eine cgi seite aufmachen will am localhost, dann bekomm ich immer ein forbidden.

kann mir wer helfen, was ich da einstellen muss?

danke fuer die hilfe

cu

dieter

  1. Hallo,

    Ich hab auf meinem Debian seit langem den Apache2 laufen. jetzt haett ich gern cgi support, und deshalb libapache2-mod-perl2 installiert.

    Hmmmm, kann mich gar nicht erinnern, dass ich je irgendetwas nachinstallieren musste, um CGI-Support für Perl zu bekommen.

    so, wenn ich jetzt eine cgi seite aufmachen will am localhost, dann bekomm ich immer ein forbidden.

    Hast du den Server so konfiguriert, dass du CGI-Scripte in allen Verzeichnissen ausführen darfst? (ExecCGI)

    kann mir wer helfen, was ich da einstellen muss?

    Was genausteht denn im error_log?

    Markus

    --
    http://www.apostrophitis.at
    六 7東曲 人港ラ
    1. also in der
      /var/log/apache2# vim error.log
      steht nichts brauchbares

      aber, in der apache2.conf steht nicht vonwegen ExecCGI

      was genau soll ich da reinschreiben?

      Hallo,

      Ich hab auf meinem Debian seit langem den Apache2 laufen. jetzt haett ich gern cgi support, und deshalb libapache2-mod-perl2 installiert.

      Hmmmm, kann mich gar nicht erinnern, dass ich je irgendetwas nachinstallieren musste, um CGI-Support für Perl zu bekommen.

      so, wenn ich jetzt eine cgi seite aufmachen will am localhost, dann bekomm ich immer ein forbidden.

      Hast du den Server so konfiguriert, dass du CGI-Scripte in allen Verzeichnissen ausführen darfst? (ExecCGI)

      kann mir wer helfen, was ich da einstellen muss?

      Was genausteht denn im error_log?

      Markus

      1. hallo,

        also in der
        /var/log/apache2# vim error.log
        steht nichts brauchbares

        Was wohl bedeutet, daß du nichts damit anfangen kannst. Was steht denn nun drin?

        was genau soll ich da reinschreiben?

        Daß es einen Artikel dazu gibt, ist dir bekannt?

        Und noch eine Kleinigkeit: laß das mit dem full Quoting bitte sein.

        Grüße aus Berlin

        Christoph S.

        --
        Visitenkarte
        ss:| zu:) ls:& fo:) va:) sh:| rl:|
        1. gut, kein quoting ;-)

          ja, den artikel hab ich mir reingezogen, der hilft mir aber nicht weiter. genau den container, der dort steht, hab ich in meine apache2.conf geschrieben

          ok. gut, die error.log hat mir gerade doch geholfen. obwohl mein container eben /var/www/cgi-bin/ dem server sagt, geht er auf /usr/lib/cgi-bin/

          gut, dann stelle nsich zwei neue probleme:

          erstnes:
          ich hab in den usr/lib/cgi-bin eine testdatei getan, namens test.pl, wie  in dem artikel beschriebn. dann bekomme ich folgende meldung:
          Internal Server Error

          die error log meint dann:

          [Mon Nov 20 17:18:34 2006] [error] [client 127.0.0.1] attempt to invoke directory as script: /usr/lib/cgi-bin/
          [Mon Nov 20 17:18:40 2006] [error] [client 127.0.0.1] script not found or unable to stat: /usr/lib/cgi-bin/test.pl
          [Mon Nov 20 17:18:52 2006] [error] [client 127.0.0.1] script not found or unable to stat: /usr/lib/cgi-bin/irc.cgi
          [Mon Nov 20 17:23:13 2006] [error] [client 127.0.0.1] (13)Permission denied: exec of '/usr/lib/cgi-bin/test.pl' failed
          [Mon Nov 20 17:23:13 2006] [error] [client 127.0.0.1] Premature end of script headers: test.pl
          [Mon Nov 20 17:25:24 2006] [error] [client 127.0.0.1] (13)Permission denied: exec of '/usr/lib/cgi-bin/test.pl' failed
          [Mon Nov 20 17:25:24 2006] [error] [client 127.0.0.1] Premature end of script headers: test.pl
          [Mon Nov 20 17:25:25 2006] [error] [client 127.0.0.1] (13)Permission denied: exec of '/usr/lib/cgi-bin/test.pl' failed
          [Mon Nov 20 17:25:25 2006] [error] [client 127.0.0.1] Premature end of script headers: test.pl

          2. frage, wie bekomme ich ihn dazu, einen anderen ordner zu nehmen, als usr/lib/cgi-bin?

          danke fuer die hilfe!! :-)

          1. Hurra, es klappt doch

            aber nur in dem usr/lib/cgi ordner. wie bekomme ich den wo anders hin?

            1. aber nur in dem usr/lib/cgi ordner. wie bekomme ich den wo anders hin?

              Wie meinst du das? Setzt doch einfach ExecCGI im Wurzelverzeichnis. Somit kannst du CGI-Scripts überall ausführen.

              Markus

              --
              http://www.apostrophitis.at
              六 7東曲 人港ラ
          2. Hallo dieter,

            gut, kein quoting ;-)

            Du kannst schon zitieren (sollst du sogar), aber immer nur den (Ab-)Satz worauf du dich gerade beziehst.

            ok. gut, die error.log hat mir gerade doch geholfen. obwohl mein container eben /var/www/cgi-bin/ dem server sagt, geht er auf /usr/lib/cgi-bin/

            Zum Anzeigen von Dateien eignet sich vim nicht so wirklich, das ist ein Editor. Nimm doch z. B. tail, das zeigt dir nur die letzten zehn (bzw. -n anzahlderzeilen) Zeilen an.

            ich hab in den usr/lib/cgi-bin eine testdatei getan, namens test.pl, wie  in dem artikel beschriebn. dann bekomme ich folgende meldung:
            [Mon Nov 20 17:25:25 2006] [error] [client 127.0.0.1] Premature end of script headers: test.pl

            Du musst die HTTP-Header mit ausgeben (abgeschlossen von zwei Newlines). Meistens reicht ein print("Content-Type: text/html\n\n");

            1. frage, wie bekomme ich ihn dazu, einen anderen ordner zu nehmen, als usr/lib/cgi-bin?

            Guck mal, ob du ein Verzeichnis 'sites-enabled' hast. Wahrscheinlich wird dort ein VirtualHost definiert, in dem ein ScriptAlias definiert wird, das den von dir angegeben globalen Überschreibt. Das ist AFAIK die Standardeinstellung bei Debian (bei Ubuntu jedenfalls, und ich hab 'ne Weile gebraucht, um rauszufinden, warum ich den DocumentRoot nicht ändern konnte ;) )

            Und denk dran, dass es einen Unterschied gibt zwischen usr/lib/cgi-bin und /usr/lib/bin. In der Apache-Konfigurationsdatei wird ersteres als relativ zum ServerRoot interpretiert, also z. B. /etc/apache2/usr/lib/cgi-bin.

            Viele Grüße aus Freiburg,
            Marian

            --
            Microsoft broke Volkswagen's world record: Volkswagen made only 22 million bugs!
            <!--[if IE]><meta http-equiv="refresh" content="0; URL=http://www.getfirefox.com"><[endif]-->
  2. hallo,

    jetzt haett ich gern cgi support, und deshalb libapache2-mod-perl2 installiert.

    Was versprichst du dir davon? Die Ausführung von CGI-Scripts (Perl) ist auch ohne diesen Zusatz problemlos möglich.

    so, wenn ich jetzt eine cgi seite aufmachen will am localhost, dann bekomm ich immer ein forbidden.

    Und was bekommt dein Server? Also, was steht im log?

    Grüße aus Berlin

    Christoph S.

    --
    Visitenkarte
    ss:| zu:) ls:& fo:) va:) sh:| rl:|
    1. hab folgenden teil in die apache2 geschrieben:

      ScriptAlias /cgi-bin/ "/srv/www/cgi-bin/"

      <Directory "/srv/www/cgi-bin">
         AllowOverride None
         Options +ExecCGI -Includes
         Order allow,deny
         Allow from all
      </Directory>

      des weiteren habe ich einen ordner in var/www angelegt, namens cgi-bin

      wenn ich dort eine cgi datei reinlege, sagt er, er findet sie nicht. wen ich nur den ordner ueber http://localhost/cgi-bin/ aufmachen will, sagt er forbidden

      ich blick da nicht durch, wo das problem liegen koennte

      hallo,

      jetzt haett ich gern cgi support, und deshalb libapache2-mod-perl2 installiert.

      Was versprichst du dir davon? Die Ausführung von CGI-Scripts (Perl) ist auch ohne diesen Zusatz problemlos möglich.

      so, wenn ich jetzt eine cgi seite aufmachen will am localhost, dann bekomm ich immer ein forbidden.

      Und was bekommt dein Server? Also, was steht im log?

      Grüße aus Berlin

      Christoph S.

      1. Hey,

        ScriptAlias /cgi-bin/ "/srv/www/cgi-bin/"
        des weiteren habe ich einen ordner in var/www angelegt

        die beiden Pfade müssen schon übereinstimmen.

        --
        水-金-地-火-木-土-天-海-冥
        1. ja, tun sie eh. hab nur den alten container noch kopiert gehabat. die pfade passen schon. leider, das problem waer mir leiebr gewesen, aber daran liegts nicht :-(

          Hey,

          ScriptAlias /cgi-bin/ "/srv/www/cgi-bin/"
          des weiteren habe ich einen ordner in var/www angelegt
          die beiden Pfade müssen schon übereinstimmen.

      2. hallo,

        hab folgenden teil in die apache2 geschrieben:
        ScriptAlias /cgi-bin/ "/srv/www/cgi-bin/"

        Das kannst du so machen.

        des weiteren habe ich einen ordner in var/www angelegt, namens cgi-bin

        Warum? Was ist denn die DocumentRoot deines Servers?

        wen ich nur den ordner ueber http://localhost/cgi-bin/ aufmachen will, sagt er forbidden

        Selbstverständlich, das sagt mir meiner auch. Du mußt dein Script aufrufen, also den Scriptnamen einschließlich Pfad eingeben.

        Grüße aus Berlin

        Christoph S.

        --
        Visitenkarte
        ss:| zu:) ls:& fo:) va:) sh:| rl:|
  3. Hi,

    so, wenn ich jetzt eine cgi seite aufmachen will am localhost, dann bekomm ich immer ein forbidden.

    kann mir wer helfen, was ich da einstellen muss?

    Hast du die execute-Rechte richtig gesetzt? Laufen die Scripts in der Kommandozeile?

    mfG,
    steckl