Hendrik Beyer: Perl und Apache

Hi Leute,
habe mal wieder ein nettes Computerproblem:

Habe zu Testzwecken auf meinem Win 95 Rechner Perl und den Apache
Webserver installiert.

In der httpd.conf Datei läßt sich ja ein beliebiges Verzeichnis als
Document Root angeben. CGI-Zugriff funktioniert seltsamer Weise aber nur über das cgi-bin im
Apache Verzeichnis. CGI-BIN's im Document Root werden dagegen ignoriert.

Kann mir jemand von Euch sagen, wie ich das ändern kann?
Mir wäre es am liebsten, wenn man CGI-Zugriff in jedem Ordner des Document Root ermöglichen könnte.
Natürlich nur, wenn das über eine Einstellung überhaupt möglich ist.

Schon mal vielen Dank für Eure Antworten,
Henk

  1. seltsamer Weise aber nur über das cgi-bin im

    Apache Verzeichnis. CGI-BIN's im Document Root werden dagegen ignoriert.

    Kann mir jemand von Euch sagen, wie ich das ändern kann?

    Hallo,

    das kannst Du nicht ändern. Ein CGI-BIN Verzeichnis oder wie immer Du das nennst (kann auch /Citrone/ heißen, ist immer virtuell.

    D.h., auf eine DocRoot wo HTML-Docs liegen, kannst Du keine Scripte ablegen oder die CGI-Schnittstelle (/Citrone/)definieren. Das gilt nicht nur für Apache....

    Servus, Rolf

    1. Hi Rolf!

      Ok, danke für den Hinweis.
      Ich dachte, daß das ginge, weil ich auf anderen Webservern zumindest bei Zugriff über FTP ja auch ein CGI Verzeichnis im public_html Ordner habe und nicht nur Zentral im Server Verzeichnis. Aber das ist wohl wieder was anderes...

      Ciao,
      Henk

      1. Ich dachte, daß das ginge, weil ich auf anderen Webservern zumindest bei Zugriff über FTP ja auch ein CGI Verzeichnis im public_html Ordner habe und nicht nur Zentral im Server Verzeichnis. Aber das ist wohl wieder was anderes...

        Einspruch!
        Selbstverständlich geht das. Auch - und gerade - in Apache.

        Innerhalb eines jeden Verzeichnisses kann man konfigurieren, was darin gehen soll. Auch CGI ist eines dieser Eigenschaften.

        In der Apache-Konfiguration gibt es zwei getrennte Verfahren, wie man CGI-Anwendungen als solche erkennen kann (denn darum geht es ja).

        Verfahren 1: Ein *Verzeichnis* hat die Eigenschaften, nur CGI-Anwendungen zu enthalten. Egal, wie die Datei heißt, selbst index.html wird als CGI-Anwendung gestartet. Manchmal macht das Sinn - meistens wird man freiwillig "vernünftige" Endungen für seine CGI-Skripts wählen.
        Beispiel:
        ScriptAlias /cgi-bin/ "/home/intranet/apache_1.3.6/cgi-bin/"

        Verfahren 2: Eine *Dateityp* wird so konfiguriert, daß er in bestimmten Verzeichnissen, ggf. auch im gesamten Webserver-Baum, als CGI-Anwendung erkannt wird.
        Beispiel (aus Apache 1.3.2):

        If you want to use CGI outside

        ScriptAliased directories, uncomment

        the following lines.

        To use CGI scripts:

        #AddHandler cgi-script .cgi
        Dies weist Dateien mit dem Namen *.cgi einen Handler zu, der sie bearbeitet. Der Handler "cgi-script" ist meines Wissens vordefiniert - man kann sich auch eigene Handler schreiben, wenn man die entsprechende Schnittstelle beachtet.

  2. In der httpd.conf Datei läßt sich ja ein beliebiges Verzeichnis als
    Document Root angeben. CGI-Zugriff funktioniert seltsamer Weise aber nur über das cgi-bin

    im Apache Verzeichnis.

    so seltsam ist das nicht; default-Einstellung und hat schon seine Berechtigung

    Mir wäre es am liebsten, wenn man CGI-Zugriff in jedem Ordner des Document Root

    »»ermöglichen könnte.

    Versuch mal in der access.conf

    <Directory /usr/local/etc/httpd/htdocs/directory_name>
    Options FollowSymLinks ExecCGI
    <Limit GET POST>
    order deny,allow
    deny from none
    allow from all
    </Limit>
    </Directory>