Heim >Betrieb und Instandhaltung >Apache >Wie ermöglicht der Apache-Server die CGI-Ausführung?

Wie ermöglicht der Apache-Server die CGI-Ausführung?

(*-*)浩
(*-*)浩Original
2019-11-30 11:30:385978Durchsuche

CGI (Common Gateway Interface) definiert, wie Webserver mit externen Inhaltsgenerierungsprogrammen interagieren, die oft als CGI-Programme oder CGI-Skripte bezeichnet werden. Es ist eine einfache Möglichkeit, mithilfe der Programmiersprache, mit der Sie am besten vertraut sind, dynamische Inhalte auf Ihrer Website bereitzustellen.

Wie ermöglicht der Apache-Server die CGI-Ausführung?

Konfigurieren Sie Apache, um CGI zuzulassen

Damit CGI-Programme dies tun können Um ordnungsgemäß zu funktionieren, muss Apache so konfiguriert werden, dass die CGI-Ausführung möglich ist. Dafür gibt es mehrere Möglichkeiten.

Methode 1: ScriptAlias-Direktive (Empfohlenes Lernen: Apache-Server ) Inhaltsverzeichnis. Apache geht davon aus, dass jede Datei in diesem Verzeichnis ein CGI-Programm ist, und versucht, es auszuführen, wenn ein Client diese bestimmte Ressource anfordert.

Die ScriptAlias-Direktive sieht folgendermaßen aus:

ScriptAlias "/cgi-bin/" "/usr/local/apache2/cgi-bin/"
Das gezeigte Beispiel befindet sich in der Standardkonfigurationsdatei httpd.conf, wenn Apache am Standardspeicherort installiert ist .

Die ScriptAlias-Direktive ähnelt der Alias-Direktive darin, dass sie ein URL-Präfix definiert, das einem bestimmten Verzeichnis zugeordnet ist. Alias ​​​​und ScriptAlias ​​​​werden normalerweise in Verzeichnissen außerhalb des DocumentRoot-Verzeichnisses verwendet.

Der Unterschied zwischen Alias ​​​​und ScriptAlias ​​​​besteht darin, dass ScriptAlias ​​​​die zusätzliche Bedeutung hat, dass alles unter diesem URL-Präfix als CGI-Programm behandelt wird.

Das obige Beispiel teilt Apache also mit, dass jede Anfrage nach einer Ressource, die mit /cgi-bin/ beginnt, im Verzeichnis /usr/local/apache2/cgi-bin/ bereitgestellt und als CGI-Programm behandelt werden sollte.

Wenn beispielsweise die URL http://www.example.com/cgi-bin/test.pl angefordert wird, versucht Apache, die Datei /usr/local/apache2/cgi-bin/ auszuführen. test.pl und geben Sie die Ausgabe zurück. Natürlich muss die Datei vorhanden und ausführbar sein und die Ausgabe auf eine bestimmte Weise zurückgeben, andernfalls gibt Apache eine Fehlermeldung zurück.

Methode 2: CGI außerhalb des ScriptAlias-Verzeichnisses

Aus Sicherheitsgründen sind CGI-Programme normalerweise auf das ScriptAlias-Verzeichnis beschränkt. Auf diese Weise können Administratoren streng kontrollieren, wer CGI-Programme verwenden darf. Wenn jedoch entsprechende Sicherheitsvorkehrungen getroffen werden, gibt es keinen Grund, warum CGI-Programme nicht aus beliebigen Verzeichnissen ausgeführt werden können.

Zum Beispiel möchten Sie möglicherweise die UserDir-Direktive verwenden, um Benutzern Webinhalte in ihrem Home-Verzeichnis zu ermöglichen. Wenn sie ihr eigenes CGI-Programm haben möchten, aber keinen Zugriff auf das Hauptverzeichnis von cgi-bin haben, müssen sie das CGI-Programm woanders ausführen können.

Es gibt zwei Schritte, um die CGI-Ausführung in einem beliebigen Verzeichnis zu ermöglichen. Zunächst muss der CGI-Script-Handler mit der AddHandler- oder SetHandler-Direktive aktiviert werden. Zweitens muss ExecCGI in der Optionsdirektive angegeben werden.

Methode 3: Verwenden Sie Optionen, um die CGI-Ausführung zuzulassen

Sie können die Optionsdirektive in der Hauptserverkonfigurationsdatei explizit verwenden, um anzugeben, dass die CGI-Ausführung zulässig ist in einem bestimmten Verzeichnis:

<Directory "/usr/local/apache2/htdocs/somedir">
    Options +ExecCGI
</Directory>
Die obige Anweisung weist Apache an, die Ausführung von CGI-Dateien zuzulassen. Sie müssen dem Server auch mitteilen, welche Dateien CGI-Dateien sind. Die folgende AddHandler-Anweisung weist den Server an, alle Dateien mit der Erweiterung „cgi“ oder „pl“ als CGI-Programme zu behandeln:

AddHandler cgi-script .cgi .pl

Methode 4: Benutzerverzeichnis

Im Benutzer zulässig sein Verzeichnis Um ein CGI-Programm für eine beliebige Datei mit der Endung .cgi auszuführen, können Sie die folgende Konfiguration verwenden.

<Directory "/home/*/public_html">
    Options +ExecCGI
    AddHandler cgi-script .cgi
</Directory>

Wenn Sie das cgi-bin-Unterverzeichnis Ihres Benutzerverzeichnisses angeben möchten, in dem alles als CGI-Programm behandelt wird, können Sie den folgenden Befehl verwenden.

<Directory "/home/*/public_html/cgi-bin">
    Options ExecCGI
    SetHandler cgi-script
</Directory>

Das obige ist der detaillierte Inhalt vonWie ermöglicht der Apache-Server die CGI-Ausführung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn