PHP Handbuch
Zurück | Kapitel 3. Installation | Nach vorne

# Server - Apache

Dieser Abschnitt enthält Anmerkungen und Tipps zur Installation von Apache mit PHP, sowohl für die Unix als auch für die Windows Version. Es gibt auch eine eigene Seite mit instructions and notes for Apache 2.

## Details der Installation von PHP mit Apache auf Unix

Aus der Kompletten Liste der Konfigurationsoptionen können Sie die weitere Argumente für configure in Zeile 10 wählen. Um sicherzustellen, dass die folgenden Instruktionen nicht inkorrekt sind, wurden die Versionsnummern hier weggelassen. Ersetzen Sie bitte die hier angeführten 'xxx' mit den korrekten Werten Ihrer Dateien.

Beispiel 3-4. Installationsanweisungen (Apache Modulversion) für PHP 4

    1.  gunzip apache_xxx.tar.gz
    2.  tar -xvf apache_xxx.tar
    3.  gunzip php-xxx.tar.gz
    4.  tar -xvf php-xxx.tar
    5.  cd apache_xxx
    6.  ./configure --prefix=/www --enable-module=so
    7.  make
    8.  make install
    9.  cd ../php-xxx
    10. ./configure --with-mysql --with-apxs=/www/bin/apxs
    11. make
    12. make install

      Wenn Sie Ihre Konfigurationsoptionen nach der Installation ändern
      möchten, müssen Sie nur die letzten 3 Schritte wiederholen. Sie
      müssen Apache nur neu starten, um das neue Modul einzubinden.
      Apache neu zu kompilieren ist nicht notwendig.

    13. cp php.ini-dist /usr/local/lib/php.ini

      Sie können Ihre .ini Datei editieren, um PHP Optionen zu setzen. Wenn
      Sie diese Datei an einer anderen Stelle haben möchten, verwenden Sie
      --with-config-file-path=/path in Schritt 10.

    14. Editieren Sie die httpd.conf oder srm.conf Datei und stellen Sie
        sicher, dass folgende Zeilen vorhanden und nicht auskommentiert sind:

       AddType application/x-httpd-php .php

       LoadModule php4_module        libexec/libphp4.so

      Hier können Sie jede gewünschte Erweiterung auswählen. .php wird
      vorgeschlagen. Sie können auch .html, und .php3 zwecks
      Rückwärtskompatibilität auswählen.

      Der Pfad auf der rechten Seite des LoadModule Satements muss auf den
      Pfad des PHP Moduls auf Ihrem System zeigen. Das obige Statement passt
      zu den oben gezeigten Schritten.

    15. Starten Sie den Apache Server mittels Ihrer normalen Prozedur. (Sie
        müssen den Server stoppen und neu starten, und nicht nur mittels
        eines HUP oder ISR1 Signals einen Reload initiieren.)

Abhängig von Ihrer Apache Installation und Unix Variante gibt es viele mögliche Wege, den Server zu stoppen und neu zu starten. Nachstehend finden Sie einige typische Zeilen für einen Server Restart auf verschiedenen apache/unix Installationen. Ersetzen Sie `/path/to/` mit dem Pfad zu diesen Applikationen auf Ihrem System.

    1. Verschiedene Linux und SysV Varianten:
    /etc/rc.d/init.d/httpd restart

    2. Verwenden von apachectl Skripten:
    /path/to/apachectl stop
    /path/to/apachectl start

    3. httpdctl und httpsdctl (verwendet OpenSSL), ähnlich wie apachectl:
    /path/to/httpsdctl stop
    /path/to/httpsdctl start

    4. Verwenden von mod_ssl, oder einem anderem SSL Server möchten Sie
    vielleicht manuell stoppen und starten:
    /path/to/apachectl stop
    /path/to/apachectl startssl

Die Orte wo sich die Programme apachectl und http(s)dctl befinden, sind oft unterschiedlich. Falls Ihr System über die Kommandos `locate`, `whereis`, oder `which` verfügt, können diese bei der Suche nach den Server Kontrollprogrammen sehr hilfreich sein.

Einige Beispiele zum Kompilieren von PHP für Apache:

    ./configure --with-apxs --with-pgsql

Dies erstellt eine `libphp4.so` Shared Library, welche in den Apache geladen wird, wenn eine LoadModule Zeile in der `httpd.conf` von Apache existiert. Die PostgreSQL Unterstützung ist in der `libphp4.so` Bibliothek eingelagert.

    ./configure --with-apxs --with-pgsql=shared

Dies erstellt ebenfalls eine `libphp4.so` Shared Library, jedoch wird zusätzlich auch eine `pgsql.so` Shared Library erstellt. Diese wird entweder aufgrund der Extension Option in der `php.ini`, oder durch die Verwendung der Funktion dl() in einem Skript von PHP geladen.

    ./configure --with-apache=/path/to/apache_source --with-pgsql

Dies erstellt eine `libmodphp4.a` Bibliothek, eine `mod_php4.c` sowie einige begleitende Dateien, und kopiert diese in das `src/modules/php4` Verzeichnis im Apache Source Tree. Dann kompilieren Sie Apache mit `--activate-module=src/modules/php4/libphp4.a`, und das Apache Build System erstellt `libphp4.a`, und linkt es statisch in die `httpd` Binary. Die PostgreSQL Unterstützung ist in dieser `httpd` Binary inkludiert, was in einer einzigen `httpd` Binary inkl. komplettem Apache und komplettem PHP resultiert.

    ./configure --with-apache=/path/to/apache_source --with-pgsql=shared

Wie vorher, außer dass die PostgreSQL Unterstützung nicht direkt in die `httpd` inkludiert, sondern eine `pgsql.so` Shared Library erstellt wird. Diese können Sie entweder mittels der Extension Option in der `php.ini`, oder direkt mittels dl() in PHP laden.

Bevor Sie sich für eine Methode PHP zu kompilieren entscheiden, sollten Sie die Vor- und Nachteile der jeweiligen Methode bedenken. Die Kompilation als verteiltes Objekt heißt, dass Sie Apache separat kompilieren können, und nicht für alles in PHP hinzugefügte bzw. geänderte neu kompilieren müssen. PHP direkt in Apache einzukompilieren (statische Methode) heißt, dass PHP schneller lädt und schneller läuft. Weitere Informationen finden Sie auf der Apache webpage on DSO support.

> Anmerkung: Die `httpd.conf` von Apache kommt derzeit mit einem Abschnitt wie folgt:

>     User nobody
>     Group "#-1"

> Wenn Sie diese Gruppe nicht auf "Group nogroup" oder etwas ähnliches ("Group daemon" ist auch weit verbreitet) ändern, kann PHP keine Dateien öffnen.

> Anmerkung: Wenn Sie `--with-apxs=/path/to/apxs` verwenden, spezifizieren Sie die installierte Version von apxs. Sie sollten die in den Apache Sourcen enthaltene apxs Version NICHT verwenden, sondern jene, welche sich aktuell auf Ihrem System befindet.

## Installation von PHP auf Windows mit Apache 1.3.x

Es gibt zwei Arten, PHP mit Apache 1.3.x unter Windows aufzusetzen. Eine ist die Verwendung des CGI Moduls (php.exe), die andere ist der Einsatz der Apache Modul DLL. In beiden Fällen müssen Sie den Apache Server stoppen und Ihre `httpd.conf` editieren, um Apache für die Zusammenarbeit mit PHP zu konfigurieren.

Es ist erwähnenswert, dass die Stabilität des SAPI Moduls erhöht wurde, und dass wir aufgrund der höheren Transparenz und Sicherheit den Einsatz gegenüber dem CGI Programm bevorzugt empfehlen.

Obwohl einige Variationen in der Konfiguration von PHP unter Apache möglich sind, sollten diese auch für Neulinge einfach genug sein. Für weitere Konfigurationsmöglichkeiten konsultieren Sie bitte die Apache Dokumentation.

Wenn Sie die PHP Distribution wie im Abschnitt Manuelle Installationsschritte beschrieben nach `c:\php\` entpackt haben, müssen Sie die folgenden Zeilen in Ihrer Apache Konfigurationsdatei einfügen, um das CGI-Modul aufzusetzen:

- `ScriptAlias /php/ "c:/php/"`

- `AddType application/x-httpd-php .php .phtml`

- `Action application/x-httpd-php "/php/php.exe"`

Beachten Sie, dass die zweite Zeile der obigen Liste in den aktuellen Versionen von `httpd.conf` bereits enthalten, jedoch auskommentiert ist. Vergessen Sie nicht, `c:/php/` durch den aktuellen Pfad zu PHP zu ersetzen.

Warnung
Wenn Sie das CGI Setup verwenden, ist Ihr Server für verschiedene mögliche Angriffe offen. Informationen, wie Sie sich vor Angriffen schützen können, finden Sie im Abschnitt CGI Sicherheit

Wenn Sie PHP als Apache Modul einsetzen möchten, kopieren Sie die `php4ts.dll` in Ihr `windows/system` (für Windows 9x/Me), `winnt/system32` (für Windows NT/2000) oder `windows/system32` (für Windows XP) Verzeichnis, und überschreiben die dort eventuell bereits existierende Datei. Dann sollten Sie die folgenden Zeilen in Ihrer Apache `httpd.conf` Datei einfügen:

- Öffnen Sie die `httpd.conf` mit Ihrem Editor, gehen Sie zur Anweisung `LoadModule` und fügen folgende Zeile am Ende der Liste hinzu: `LoadModule php4_module c:/php/sapi/php4apache.dll`

- Nach Verwendung der Windows Installers für Apache kann es sein, dass Sie die Anweisung `AddModule` für `mod_php4.c` definieren müssen. Dies ist vor allem dann wichtig, wenn die `ClearModuleList` Anweisung definiert ist, welche Sie ein paar Zeilen darunter finden. Sie werden eine Liste mit `AddModule` Einträgen finden, an dessen Ende Sie bitte die folgende Zeile hinzufügen: `AddModule mod_php4.c`

- Suchen Sie nach einer Phrase wie `# AddType allows you to tweak mime.types`. Hier werden Sie einige `AddType` Einträge sehen. Fügen Sie die folgende Zeile am Ende der Liste ein: `AddType application/x-httpd-php .php`. Hier können Sie jede beliebige Extension von Dateien angeben, welche durch PHP geparst werden sollen. .php ist einfach die von uns empfohlene. Sie können aber auch .html und .php3 zwecks Rückwärtskompatibilität einfügen.

Vergessen Sie nicht, nach der Änderung der Konfigurationsdatei den Server neu zu starten, z.B. mit NET STOP APACHE, gefolgt von NET START APACHE wenn Sie Apache als Windows Service nutzen, oder verwenden Sie Ihre üblichen Shortcuts.

Es gibt zwei Arten, wie Sie das Feature Source Code Highlighting verwenden können, auch wenn deren Funktionsfähigkeit von Ihrer Installation abhängt. Wenn Sie Apache so konfiguriert haben, dass er PHP als SAPI Modul verwendet, können Sie dieses Feature verwenden, indem Sie die folgende Zeile in Ihrer `httpd.conf` einfügen (an der selben Stelle wo Sie `AddType application/x-httpd-php .php` eingefügt haben, siehe oben): `AddType application/x-httpd-php-source .phps`.

Haben Sie Apache so konfiguriert, dass er PHP als CGI Programm verwendet, müssen Sie die Funktion show_source() benutzen. Dies tun Sie, indem einfach ein PHP Skript mit folgendem Code erstellen: `<?php show_source ("original_php_script.php"); ?>`. Ersetzen Sie `original_php_script.php` durch den Dateinamen des Skriptes, dessen Source Sie zeigen wollen.

> Anmerkung: Bei Apache unter Windows müssen alle Backslashes in einer Pfadangabe wie z.B. "c:\directory\file.ext" durch Slashes ersetzt werden, wie z.B. "c:/directory/file.ext".

Zurück | Zum Anfang | Nach vorne
Server-CGI/Commandline | Nach oben | Servers-Apache 2.0