Ich   Entwicklung   Lösungen Apache PHP mySQL  
 

Installation von PHP als Apache-Modul

Wir installieren PHP als Apache-Modul. Im Abschnitt Global Environment im Apache-Tutorium haben Sie bereits gelernt, dass man den Apache Webserver mithilfe von Modulen erweitern kann. Wir bringen dem Apache also bei, PHP auszuführen.

Zusatzinfo

Ausser den mit PHP mitgelieferten Modulen gibt es die Möglichkeit, PHP über das CGI des Apache zu betreiben. Provider nutzen dies meist, da sich bei der CGI-Variante die einzelnen Benutzerrechte und Ressourcen einfacher kontrollieren lassen. In diesem Tutorium wird aber ausschließlich auf die Modul-Variante eingegangen. Das Apache-Modul bietet eine wesentlich bessere Performance und engere Zusammenarbeit mit dem Webserver.

Weitere Informationen zu Apache-Modulen und dem CGI lesen Sie bitte in meinem Artikel Webapplikationen in der Einführung in XHTML, CSS und Webdesign von Michael Jendryschik.

PHP herunterladen

Auf http://www.php.net/downloads.php können Sie sich die aktuell stabile Version herunterladen. Wählen Sie unter Windows Binaries das ZIP package! In der zweiten Version, die eine Setup-Datei enthält, ist das Apache-Modul nicht enthalten!

Entpacken Sie das ZIP-Archiv so, dass sich alle Dateien im Verzeichnis c:\server\php\ befinden (oder irgendein anderes Verzeichnis, beispielsweise c:\server\php5\ oder c:\Programme\server\php\; in diesem Tutorial gehe ich aber von erstem Fall aus).

Die Klassenbibliothek der Zend Engine installieren

Screenshot php4ts.dll

Als erstes müssen wir die Datei php4ts.dll in das System-Verzeichnis von Windows kopieren. Bei NT-Betriebssystemen (2000, XP) ist dies c:\WINNT\System32\ oder c:\Windows\System32\, bei anderen Windows-Versionen (95, 98, Me) c:\Windows\System\. Sie finden die Datei im Hauptverzeichnis der gerade heruntergeladenen Dateien (siehe Bild).

Im Bild ist eine entpackte PHP4-Version zu sehen. Bei PHP 5 heißt die entsprechende Datei php5ts.dll, ansonsten gilt dasselbe wie für die PHP4-Version.

Installieren einer PHP-Konfigurationsdatei

Damit PHP beim ersten Start weiß, wie es konfiguriert wurde, sollten wir noch eine Konfigurationsdatei anlegen. Eine vorgefertigte Konfigurationsdatei ist bereits im ZIP-Archiv enthalten (siehe Bild). Benennen Sie die Datei php.ini-recommended um in php.ini und kopieren Sie diese in das Windows-Verzeichnis, also c:\WINNT\ oder c:\Windows\.

Screenshot php.ini

Anstatt die Datei in Ihr Windows-Verzeichnis zu kopieren können Sie auch einen Eintrag in der httpd.conf vornehmen, um anzugeben, in welchem Verzeichnis die php.ini zu finden ist:

PHPIniDir "C:/server/php"

Hinzufügen des Moduls zum Apache Webserver

Öffnen Sie die Kondigurationsdatei Ihres Apache Webservers. Wenn Sie meinen Empfehlungen gefolgt sind, finden Sie diese unter dem Pfad c:\server\apache2\conf\httpd.conf. Gehen Sie zu der Stelle mit den LoadModule-Direktiven. Dort müssen wir dem Apache mitteilen, dass er das PHP-Modul laden soll.

Screenshot SAPI-Verzeichnis

Wie im Bild zu sehen, liegen die Module im Unterverzeichnis /sapi Ihres PHP-Verzeichnisses. Die obere Datei, php4apache.dll, ist das Modul für den Apache 1.3.x, die untere Datei, php4apache2.dll, entsprechend für den Apache2.

Folglich müssen wir in der httpd.conf eingeben:

LoadModule php4_module c:/server/php/sapi/php4apache2.dll

Im Bild ist eine entpackte PHP4-Version zu sehen. Bei PHP 5 heissen die entsprechende Dateien php5apache.dll bzw. php5apache2.dll, ansonsten gilt dasselbe wie für die PHP4-Version.

Zumindest bei den ersten PHP5-Versionen liegen die SAPI-Module leider nicht in einem entsprechenden Unterverzeichnis, sondern liegen alle im PHP-Hauptverzeichnis. Hier heisst es also eventuell:

LoadModule php5_module c:/server/php/php5apache2.dll

Zusatzinfo

Eine weitere Erklärung des Begriffes SAPI finden Sie ebenfalls in meinem Artikel Webapplikationen in der Einführung in XHTML, CSS und Webdesign von Michael Jendryschik.

War es das?

Nicht ganz. Der Apache Webserver beherrscht jetzt zwar die Ausführung von PHP-Skripten, er weiß aber nicht, welche Dateien überhaupt PHP-Skripte sind (und kann sie deshalb auch nicht ausführen).

Rein Theoretisch können Sie den Apache veranlassen, jede beliebige Datei mit PHP auszuführen. Sie könnten beispielsweise einstellen, dass alle Dateien mit den Dateiendungen .html und .php mit PHP ausgeführt werden. Da PHP nur PHP-Quelltext anrührt und HTML-Quelltext unbehandelt weitergibt, wäre das kein Problem. Sie sollten sich aber Gedanken machen, ob das sinnvoll und notwendig ist; vor allem deshalb, weil man dann nicht mehr an der Dateiendung erkennen kann, ob es sich um ein Skript oder ein HTML-Dokument handelt. Aber kostet die Ausführung mit PHP auch (minimal) Zeit, deshalb sollten wirklich nur PHP-Skripte mit PHP ausgeführt werden.

Bei Providern ist der Apache meist so eingestellt, dass er Dateien mit der Endung .php mit PHP ausführt. Um dies zu erreichen, fügen Sie der httpd.conf folgende Zeile hinzu (gilt für PHP 4 und 5):

AddType application/x-httpd-php .php

Achtung!

Bei einigen späteren Versionen des Apache 1.3.x ist standardmäßig die Option ClearModuleList aktiviert. In diesem Fall müssen Sieunter die darauf folgende Liste von AddModule...-Anweisungen noch PHP hinzufügen: AddModule mod_php4.c.

Alternativ können Sie auch die Option ClearModuleList und alle AddModule...-Anweisungen einkommentieren (eine# davor schreiben).

Siehe dazu auch das Apache-Tutorial (Box am Ende der Seite).

Geschafft!

Wenn Sie die httpd.conf speichern und den Apache neu starten, sind Sie fertig. Ihr Apache führt jetzt PHP-Skripte mit seinem PHP-Modul aus und liefert das Ergebnis an den Browser weiter.

Zusatzinfo

Das PHP-Modul stellt dem Apache einen neuen MIME-Typen mit Namen x-httpd-php zur Verfügung. Die AddType-Direktive weist nun der Dateiendung .php diesen MIME-Typen zu. Der Apache weiß, dass er Dateien dieses MIME-Typs mit PHP ausführen soll.

Der erste Test

Erstellen Sie in Ihrem DocumentRoot eine neue Datei und nennen Sie phpinfo.php. In diese Datei schreiben Sie die Zeile:

<?php phpinfo(); ?>

Wenn Sie jetzt die Datei über Ihren Browser aufrufen (http://localhost/phpinfo.php), wird Ihnen eine Infoseite zu PHP angezeigt, die in etwa wie die folgende aussehen sollte:

Screenshot phpinfo()

Je nach Version und Einstellungen unterscheiden sich die Anzeigen natürlich recht stark. Der obige Screenshot ist von Ende 2002. Ein aktueller Screenshot von einer PHP5-Version (in der man sogar einen kleinen Bug erkennen kann, bei Zend Extension ist eindeutig eine 2 zu viel):

Screenshot phpinfo() mit PHP 5

Auf dieser Seite finden Sie noch weitere Informationen über PHP, wie die installierten Module (ja, auch PHP ist modular aufgebaut) und deren Konfiguration.

Achtung!

Falls Ihr Browser Ihnen die phpinfo.php nicht anzeigt, sondern nur zum Download anbietet, ist leider etwas falsch gelaufen. In diesem Fall funktioniert PHP nicht. Um die Ursache zu finden, öffnen Sie eine Eingabeaufforderung und starten den Apache manuell (neu): apache -k (re)start. Der Apache gibt Ihnen eine Fehlermeldung, aus der ersichtlich ist, was das Problem ist.

Dieses Problem wurde bereits sehr oft von Lesern dieses Tutorials an mich herangetragen. In allen Fällen war es ein Schreibfehler hier oder eine falsch kopierte Datei da. Gehen Sie also notfalls noch einmal alles gründlich durch.

Am unteren Rand des Bildes sehen Sie, dass PHP die Zend Engine nutzt. Die Firma Zend entwickelt neben kommerziellen Produkten für PHP auch die Zend Engine, die das Kernstück von PHP darstellt.

Interessant ist auch noch der Zend Optimizer, der PHP-Code zur Ausführungszeit optimiert und für die Ausführung von mit dem Zend Encoder verschlüsselten Dateien nötig ist. Sie können diesen Schritt getrost überspringen und direkt zur Konfiguration von PHP weitergehen, wenn Sie möchten.

weiter zur Installation des Zend Optimizer weiter

weiter zur Konfiguration von PHP weiter

URL: www.intermitto.net/php/installation/modul/
© 2004-05 Jens Becker - intermitto.net v5.1
Letzte Änderung: 23.08.2005

Home - Kontaktformular - Downloads - Suche und Sitemap - Impressum
Entwicklung - Problemlösungen - Tutorials: Apache PHP mySQL

user  pass