13.3 PHP installieren und einrichten
Die nächste Komponente Ihres LAMP/WAMP-Systems nach Apache ist der Datenbankserver MySQL, dessen Installation bereits in Kapitel 12, »Datenbanken«, erläutert wurde. Deshalb geht es an dieser Stelle mit der Installation und Konfiguration der Web-Programmiersprache PHP weiter. Die Grundlagen der PHP-Programmierung werden in Kapitel 18, »Webserveranwendungen«, beschrieben.
13.3.1 Installation
Es gibt grundsätzlich zwei unterschiedliche PHP-Installationsvarianten: Sie können den Interpreter extern über die CGI-Schnittstelle aufrufen oder aber als Webservermodul installieren. Im Folgenden werden beide Methoden beschrieben; die Modulvariante natürlich am Beispiel von Apache 2.
Installation unter Unix
Als Erstes müssen Sie das aktuelle PHP-Sourcecode-Archiv herunterladen. Die Projektwebsite lautet http://www.php.net/. Das aktuelle Release Mitte Juli 2013 ist 5.5.1. Genau wie bei Apache sollten Sie den MD5-Hash der heruntergeladenen Datei mit dem auf der Website angegebenen Wert vergleichen. Danach können Sie das Archiv entpacken:
$ tar xzvf php-5.5.1.tar.gz
beziehungsweise
$ tar xjvf php-5.5.1.tar.bz2
Nun können Sie in das neu erzeugte Source-Verzeichnis wechseln:
# cd php-5.5.1
Als Nächstes wird das configure-Skript aufgerufen. Verschaffen Sie sich zunächst einen Überblick über die verfügbaren Optionen:
$ ./configure --help |less
Da Sie ein LAMP-System installieren möchten, muss mindestens eine der MySQL-Schnittstellen von PHP konfiguriert werden. Dazu muss MySQL bereits auf Ihrem Rechner installiert sein. Es gibt insgesamt drei verschiedene solcher Schnittstellen; die Unterschiede werden in Kapitel 18, »Webserveranwendungen«, näher erläutert. Für die klassische MySQL-Schnittstelle müssen Sie die Option --with-mysql=MySQL-Installationsverzeichnis angeben. Die beiden anderen Schnittstellen, mysqli oder PDO, benötigen den Pfad zu dem Skript mysql_config im bin-Verzeichnis der MySQL-Installation.
Wenn PHP als Apache 2-Modul laufen soll, ist außerdem die Option --with-apxs2[= /Pfad/zu/apxs] erforderlich. Das »APache eX-tenSion tool« liegt im bin-Verzeichnis von Apache.
Hier sehen Sie einen configure-Aufruf, der die Makefiles zur Installation als Apache 2-Modul mit allen drei MySQL-Schnittstellen in dem Basisverzeichnis /usr/local/php5 erstellt, wobei sich apxs unter /usr/local/apache2/bin und MySQL unter /usr/local/mysql befindet:
$ ./configure --prefix=/usr/local/php5 \
--with-mysql=/usr/local/mysql \
--with-mysqli=/usr/local/mysql/bin/mysql_config \
--with-pdo \
--with-pdo-mysql=/usr/local/mysql/bin/mysql_config \
--with-apxs2=/usr/local/apache2/bin/apxs
Nach einem erfolgreichen Durchlauf von configure werden der eigentliche Build-Vorgang und die Installation in das Zielverzeichnis durchgeführt (Letzteres als User root):
$ make
# make install
Falls Sie PHP mit der Option --with-apxs2 konfiguriert haben, müsste Ihre httpd.conf-Datei nun automatisch folgende Zusatzzeile enthalten:
LoadModule php5_module modules/libphp5.so
Zusätzlich müssen Sie dafür sorgen, dass Apache 2 Dateien mit der Endung .php als PHP-Skripte behandelt. Dazu wird (am besten im bereits vorhandenen Container <If-Module mime_module>) die folgende Zeile hinzugefügt:
AddHandler php5-script .php
Falls Sie PHP als CGI-Sprache kompiliert haben, müssen Sie dagegen folgende Zeilen hinzufügen:
ScriptAlias /php/ /usr/local/php5/bin/
AddType application/x-httpd-php .php
Action application/x-httpd-php "/php/php"
Nach der PHP-Installation müssen Sie Apache einmal ganz beenden und wieder starten; die Option restart genügt leider nicht. Danach können Sie testen, ob PHP funktioniert. Speichern Sie dazu folgende kleine Datei unter dem Namen info.php in Ihrem Website-Verzeichnis:
<?php
phpinfo();
Öffnen Sie dann Ihren Browser, und geben Sie die URL http://localhost/info.php ein. Wenn alles funktioniert hat, müssten Sie ausführliche Informationen über Ihre PHP-Installation enthalten, wie in Abbildung 13.1 gezeigt.
Installation unter Windows
Für Windows gibt es PHP als offizielles Binärpaket. Das jeweils aktuelle PHP-Release (zurzeit 5.5.1) wird jeweils in zwei verschiedenen Varianten angeboten:
- Installer
Eine ausführbare Datei (.exe), die einfach per Doppelklick gestartet wird. Der Installer kann auch automatisch die PHP-Konfiguration als Apache-Modul vornehmen. Diese Variante ist nur bis PHP-Version 5.3 verfügbar, deshalb wird die Verwendung des Installers hier nicht weiter erläutert. - ZIP-Archiv
Diese Datei müssen Sie entpacken; anschließend sind einige Konfigurationsschritte erforderlich.
Führen Sie folgende Schritte durch, um PHP aus der ZIP-Datei zu installieren:
- Laden Sie die aktuelle Version der Datei herunter (zurzeit php-5.5.1-Win32-VC11-x86.zip beziehungsweise php-5.5.1-Win32-VC11-x64.zip für 64-Bit-Systeme). Entpacken Sie sie mit dem Windows Explorer, mit WinZip oder einem anderen ZIP-fähigen Programm. Als Verzeichnis empfiehlt sich beispielsweise C:\php5. Die Beschreibung der restlichen Schritte geht davon aus, dass Sie dieses Verzeichnis gewählt haben; andernfalls müssen Sie die Angaben entsprechend anpassen.
- Falls Sie PDO und viele weitere interessante PHP-Erweiterungen benötigen, können Sie viele von ihnen unter der URL http://downloads.php.net/pierre/ herunterladen; an direkten DLL-Downloads auf der PECL-Website wird zurzeit noch gearbeitet.
- Das PHP-Verzeichnis enthält eine Datei namens php.ini-dist. Es handelt sich um die Standardversion der Konfigurationsdatei php.ini. Kopieren Sie sie nach %SystemRoot% (meist C:\Windows), und benennen Sie sie in php.ini um.
- Nehmen Sie an Ihrer neuen php.ini-Datei folgende Änderungen vor (die entsprechenden Zeilen sind bereits enthalten,
aber noch nicht mit Pfadangaben versehen):
doc_root = C:\Programme\Apache Software
Foundation\Apache2\htdocs ; Ihre DocumentRoot
extension_dir = C:\PHP\ext ; PHP-Extension-VerzeichnisWie Sie sehen, wird in der Windows-Version dieser Datei der systemübliche Backslash (\) als Pfad-Trennzeichen verwendet. Das Semikolon leitet einen Kommentar ein, der bis zum Zeilenende reicht. Wie die Kommentare schon andeuten, müssen Sie die Angaben an Ihr Apache- beziehungsweise PHP-Verzeichnis anpassen.
- Fügen Sie das Verzeichnis C:\php5 zur Umgebungsvariablen PATH hinzu. Dies geschieht unter Start · Systemsteuerung · System · Erweitert · Umgebungsvariablen.
- Falls es Startschwierigkeiten gibt, müssen Sie die Datei php5ts.dll aus Ihrem PHP-Verzeichnis nach %SystemRoot%\System32 kopieren. Möglicherweise befindet sich dort nämlich eine ältere Version dieser Datei.
- Nehmen Sie zum Schluss folgende Ergänzungen an Ihrer httpd.conf-Datei vor, um PHP als Apache-Modul zu betreiben:
LoadModule php5_module "C:/php5/php5apache2.dll"
AddHandler php5-script .php
Für die CGI-Variante werden dagegen folgende Zeilen benötigt:
Beenden Sie Apache zum Schluss, und starten Sie ihn wieder. Im Apache-Monitor müsste er sich nun mit einer Versionsangabe wie Apache/2.2.25 (Win32) PHP/5.5.1 melden. Auch den zuvor bei der Unix-Installation beschriebenen Test mit phpinfo() können Sie durchführen; das Ergebnis sollte etwa so aussehen wie in Abbildung 13.1.
Abbildung 13.1 Die Ausgabe von phpinfo(), hier für die PHP-Version 5.3.10, die mit Ubuntu 12.04 LTS geliefert wurde
Apache und PHP unter Mac OS X
Seit Mac OS X 10.6 (Snow Leopard) sind Apache 2 und PHP 5 bereits ab Werk installiert. Um sie zu aktivieren, starten Sie die Systemeinstellungen im Dock. Wählen Sie Sharing aus dem Abschnitt Internet & Netzwerk, und aktivieren Sie hier das Web Sharing – fertig.
13.3.2 Die PHP-Konfigurationsdatei »php.ini«
Wie bereits im Zusammenhang mit der Installation angesprochen wurde, besitzt PHP seine eigene Konfigurationsdatei php.ini. Wie der Dateiname bereits vermuten lässt, wurde ihre Syntax (auch unter Unix) den klassischen Windows-INI-Dateien nachempfunden:
- Sie enthält verschiedene Abschnitte, die durch Schlüsselwörter in eckigen Klammern
gekennzeichnet sind. Beispiel:
[PHP]
- Jede Einstellung steht in einer eigenen Zeile und hat das Format Name=Wert.
Beispiel:doc_root = /usr/local/apache2/htdocs
Unter Windows wird in Pfaden übrigens, wie bereits erwähnt, der plattformspezifische Backslash (\) verwendet.
- Ein Semikolon leitet einen Kommentar ein, der bis zum Ende der jeweiligen Zeile reicht.
Beispiel:
; doc_root: Die DocumentRoot der Website
doc_root = "C:\Programme\Apache Group\Apache2\htdocs" ; Win32
In Tabelle 13.6 sehen Sie die wichtigsten Optionen für die Datei. Beachten Sie, dass die Syntax in der Regel toleranter ist, als es in der Tabelle den Anschein erweckt. Die Boolean-Alternativen On|Off, "On"|"Off" und "1"|"0" sind beispielsweise in der Regel synonym. Die Angaben stammen aber aus der Originaldokumentation, sodass Sie auf der sicheren Seite sind, wenn Sie sich daran halten.
Einstellung | Standardwert | Erläuterungen |
short_open_tag = On|Off |
On |
Bestimmt, ob <? ... ?> statt <?php ... ?> |
asp_tags = On|Off |
Off |
Bestimmt, ob die ASP-Syntax <% ... %> statt |
max_execution_time |
30 |
maximale Ausführungsdauer von PHP-Skripten in Sekunden, bevor sie abgebrochen werden |
precision = "INT" |
"14" |
Genauigkeit von Fließkommazahlen als |
y2k_compliance = On|Off |
Off |
Jahr-2000-Kompatibilität (funktioniert nur mit neueren Browsern) |
expose_php = On|Off |
On |
Bestimmt, ob die PHP-Existenz z. B. in den Apache-ServerTokens veröffentlicht wird. |
memory_limit = "...M|K|B" |
"8M" |
Maximale Speichermenge, die ein Skript verbrauchen darf. Existiert nur, wenn PHP mit --enable-memory-limit kompiliert wurde. |
track-vars = "On"|"Off" |
"On" |
Anfrage- und Serverdaten werden in |
arg_separator.output = "STRING" |
"&" |
Trennzeichen in Query-Strings, die von PHP erzeugt wurden |
arg_separator.input = "STRING" |
"&" |
Trennzeichen für die Auswertung von Query-Strings (jedes Zeichen des Wertes wird einzeln
geprüft, |
variables_order = "STRING" |
"EGPCS" |
Reihenfolge, in der Variablenarten für register_globals und S_REQUEST ausgewertet werden: |
register_globals = |
"Off" |
Stellt Formularfelder, Umgebungsvariablen, Servervariablen und Cookies automatisch als globale Variablen mit ihrem Feldnamen bereit. Praktisch, aber sicherheitstechnisch riskant; daher seit Version 4.2 standardmäßig "Off". Wurde in PHP 5.4 endgültig abgeschafft. |
register_argc_argv = |
"On" |
Stellt GET-Variablen und Kommandozeilenargumente als C-ähnliche argc/argv bereit. |
register_long_arrays = |
"On" |
Definiert $HTTP_POST_VARS und $HTTP_GET_VARS zusätzlich zu $_POST und $_GET (seit Version 5.0 konfigurierbar; davor immer eingeschaltet). |
post_max_size = |
"8M" |
maximale Größe von POST-Daten |
auto_prepend_file = |
"" |
Include-Datei, die automatisch am Kopf jeder Datei importiert wird |
auto_append_file = |
"" |
Include-Datei, die automatisch am Fuß jeder Datei importiert wird |
default_mimetype = |
"text/html" |
Standardtyp für den Header Content-Type |
default_charset = |
"iso-8859 – 1" |
Standardzeichensatz für den Header |
always_populate_raw_ |
"0" |
Bestimmt, ob $HTTP_RAW_POST_DATA (POST-Daten ohne Variablenaufteilung) immer erzeugt wird. |
allow_webdav_methods = |
"0" |
Bestimmt, ob WebDAV-HTTP-Methoden zulässig sind. |
include_path = |
Umgebungsvariablen |
Verzeichnisse, in denen nach Include-Dateien gesucht wird |
doc_root = |
PHP_INCLUDE_ |
übergeordnetes Verzeichnis für PHP-Skripte (z. B. Apache- DocumentRoot) |
user_dir = "VERZEICHNIS" |
NULL |
Name des Benutzerverzeichnisses mit PHP-Dateien (entspricht dem Konzept des Apache-Moduls mod_userdir) |
extension_dir = "PFAD" |
Umgebungsvariablen |
Verzeichnis mit Extension-Dateien, die beim PHP-Start geladen werden |
extension = "DATEI" |
– |
Fügt die angegebene PHP-Erweiterung hinzu, z. B. extension=php_mysqli.dll |
cgi.rfc2616_headers = |
"0" |
ausgeschaltet Status:-Header; eingeschaltet RFC-2616-Header |
file_uploads = |
"1" |
Datei-Uploads zulässig |
upload_tmp_dir = |
NULL |
Temp-Verzeichnis für Uploads |
upload_max_filesize = |
"2M" |
maximale Größe für Upload-Datei |
Ihr Kommentar
Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.