Installationsanleitungen

PHP via CGI

Die notwendigen Schritte

1. Als Domainadmin einloggen und in das cgi-Verzeichnis der Domain wechseln:

cd doms/domain.dom/cgi/

2. Den so genannten PHP-Stub kopieren:

cp /usr/local/share/php/php5current/bin/php525stub .

3. Die passende Konfigurationsdatei besorgen:

cp /usr/local/share/php/php5current/etc/php-cgi-fcgi.ini .

4. Die Konfigurationsdatei anpassen.

Ganz am Ende der Konfigurationsdatei müssen die gewünschten Extensionsdurch das Löschen des Kommentarzeichens aktiviert werden, z.B. dieModule für den Zugriff auf MySQL, also Datei im einzig wahren Editoröffnen:

vi php-cgi-fcgi.ini

Und dann bei den gewünschten Modulen zur Aktivierung das „;“ entfernen, in unserem Beispiel möchten wir gerne Zugriff auf die GD-Library und MySQL über das klassische Modul haben:

------8< SCHNIPP >8------
;extension=curl.so
extension=gd.so
;extension=imap.so
;extension=mcrypt.so
;extension=mhash.so
;extension=ming.so
extension=mysql.so
;extension=mysqli.so
;extension=odbc.so
;extension=pdo.so
;extension=pdo_mysql.so
------8< SCHNIPP >8------

5. Zum Abschluss muss dem Virtuellen Host noch mitgeteilt werden, dass ab sofort mit PHP-CGI gearbeitet wird. Dazu werden im DocumentRoot der Domain der .htaccesszwei Zeilen hinzugefügt bzw. eine .htaccess mit den zwei Zeilenangelegt. Im Beispiel handelt es sich um die Domain www.domain.dom, also:

cd ~/doms/domain.dom/subs/www
vi .htaccess

Dort füge man ein:

AddType application/x-httpd-phpcgi .php
Action application/x-httpd-phpcgi /cgi-bin/php525stub

6. Fertig.

 

PHP via CGI

In besonderen Fällen ist es notwendig, PHP über CGI auszuführen. Z.B. wenn man Einstellungen der php.ini verändern möchte, oder Module benötigt werden, die im safe_mode nicht funktionieren können. Insbesondere steht unter mod_php die Funktion mail() nicht zur Verfügung.

Um PHP über CGI auszuführen, brauchen wir zunächst den PHP-Interpreter in unserem CGI-Verzeichnis. Wir nehmen dafür einen Wrapper, der wesentlich kleiner ist, als PHP selbst. Außerdem benötigen wir meist eine eigene php.ini. Die Pfade und genauen Dateibezeichnungen sind in der Installationsanleitung der jeweiligen php-Version aufgeführt.

Die php.ini können wir nun unseren Anforderungen gemäß bearbeiten. Der safe_mode ist in der o.g. php.ini bereits ausgeschaltet, geht es also nur um den safe_mode, dann reicht das direkte Kopieren.

Im zweiten Schritt müssen wir in dem Verzeichnis unterhalb dessen PHP-Skripte über CGI ausgeführt werden sollen, eine .htaccess Datei anlegen, die diese Umleitung bewirkt. Auch dies ist in der entsprechenden Installationsanleitung erklärt.

In unserem Beispiel erstellen wir eine .htaccess Datei mit etwa folgendem Inhalt in einem Domainverzeichnis (z.B. /home/doms/example.com/subs/www/ oder tiefer darunter):

AddType application/x-httpd-phpcgi .php
Action application/x-httpd-phpcgi /cgi-bin/phpstub

Was genau man anstelle von x-httpd-phpcgi verwenden will, bleibt einem selbst überlassen.

Ebenso kann man eine (oder mehrere) beliebige Dateiendungen anstelle von .php in der ersten Zeile einsetzen. Nur Dateien mit dieser/n Endung(en) werden per PHP via CGI ausgeführt.

Wenn man hier nicht .php angibt, werden Dateien mit der Endung .php normal weiter mit mod_php ausgeführt. So kann man PHP via CGI und mod_php auch in einem Verzeichnis oder einer Domain mischen.

Zuguterletzt kann auch statt phpstub ein anderer Name benutzt werden. Es stehen verschiedene Programme zur Verfügung und sie müssen zwar mit einem Namen unterhalb cgi-bin angesprochen werden, aber der ist beliebig, auch Unterverzeichnisse sind zugelassen.

Zum Testen erstellen wir in dem Verzeichnis mit der .htaccess Datei eine Datei phpinfo.php wie folgt:

<?php phpinfo(); ?>

Rufen wir diese Datei im Webbrowser auf, dann wird eine phpinfo-Datei ausgegeben und wir können feststellen, dass die Server API nun CGI ist. Auch der safe_mode ist, dieser Ausgabe zufolge, abgeschaltet. Aber auch den Nachteil will ich nicht verschweigen: die Aufrufe über CGI sind träger.
Unter Umständen werden einige Skripte nach dieser Umstellung nicht mehr funktionieren, weil PHP-Module fehlen. Da PHP bei der CGI Version für jeden Aufruf jeder Seite neu geladen werden muss, sind nur wenige Module vorgeladen. Das hält die Startzeit kurz. Weitere Module können am Ende der Datei php.ini hinzugeladen werden.

Achtung:

Wer z.B.: MySQL mit php via CGI benutzen möchte, muß am Ende der php.ini

(php-cgi-fcgi.ini) Datei das ";" Semikolon (Kommentarzeichen) am Beginn der Zeilen

 

;extension=mysql.so

und / oder

;extension=mysqli.so

entfernen.

Geändert am: 16.07.2008, 11:47 Uhr
Nach oben
Druckversion