de.comp.lang.php.* FAQ

3.3. Wie installiere ich CGI-PHP auf einem Apache-Server?

Keywords: Installation | Apache | Server | CGI

Antwort von Kristian Köhntopp

Schritt 1: Man definiert ein Verzeichnis als CGI Verzeichnis:

<Directory /home/www/servers/phplib.shonline.de/cgi/>
Options ExecCGI
AllowOverride None
</Directory>

Hier wird das Verzeichnis /home/www/.../cgi als Verzeichnis zur Ausführung von CGI-Dateien gekennzeichnet, indem für das Verzeichnis das ExecCGI Attribut gesetzt wird.

Schritt 2: Man definiert für dieses Verzeichnis eine URL

ScriptAlias  /cgi/      /home/www/servers/phplib.shonline.de/cgi/

Die URL /cgi/ wird jetzt auf dieses Verzeichnis /home/www/.../cgi/ abgebildet.

Man kann jetzt in diesem Verzeichnis eine ausführbare Datei (etwa ein Shellscript) ablegen, die den folgenden Text ausgibt, wenn man sie startet.

Content-Type: text/plain

Hallo, Welt.

Wenn man diese Datei unter der URL http://meinserver.de/cgi/name_des-scripts aufruft, muss man den Text "Hallo, Welt." angezeigt bekommen. Gelingt dies nicht, sollte man durch das Error Log toben und nachsehen, was dort schiefgeht.

Schritt 3: Man installiert den PHP-Interpreter im CGI-Verzeichnis und prüft, ob man ihn als CGI-Programm aufrufen kann. Dazu ist der Interpreter nach /home/www/.../cgi zu kopieren und dann unter der URL http://.../cgi/php oder http://.../cgi/php.exe oder wie immer der Interpreter heißt aufzurufen.

Dabei muss die folgende Fehlermeldung kommen:

Security Alert! PHP CGI cannot be accessed directly.

This PHP CGI binary was compiled with force-cgi-redirect
enabled. This means that a page will only be served up if the
REDIRECT_STATUS CGI variable is set. This variable is set, for
example, by Apache's Action directive redirect.

Kommt die Meldung nicht, ist das PHP-Binary unsicher und sollte durch ein korrekt kompiliertes Binary ersetzt werden.

Schritt 4: Man definiert eine Scriptaktion, die das o.a. Binary startet und definiert eine Endung, die durch diese Aktion abgehandelt wird:

  • Action       php-script /cgi/php
    

    teilt dem Apache mit, dass der interne MIME-Typ php-script durch die URL /cgi/php (oder wie immer die URL zum Aufruf des PHP-Interpreters aus Schritt 3 heißt) abgehandelt wird. Der MIME-Typ php-script ist illegal und das ist gut so, denn er wird nur innerhalb von Apache verwendet (er darf nur innerhalb von Apache verwendet werden!).

  • AddHandler   php-script .php
    

    teilt Apache weiterhin mit, dass die Endung .php durch den MIME-Handler für den MIME-Type php-script abgehandelt wird.

Valid HTML 4.01! Valid CSS!

3.3. Wie installiere ich CGI-PHP auf einem Apache-Server?
http://www.php-faq.de/q/q-install-apache-cgi.html
Archiv der de.comp.lang.php-FAQ Dies ist eine Archivseite von 2008 und wurde seitdem nicht geändert. Das dclp-FAQ-Team