Die Konfigurationsdatei
Die Konfigurationsdatei (php.ini) wird beim Start von PHP eingelesen. Für die
Servermodul-Versionen von PHP geschieht dies nur einmal beim Start des
Webservers. Für die CGI- und
CLI-Versionen geschieht dies bei jedem Aufruf.
Nach der php.ini wird an folgenden Orten in der angegebenen Reihenfolge
gesucht:
-
Spezielle Orte für SAPI-Module (
PHPIniDir
-Direktive
im Apache2, -c
Kommandozeilenparameter in CGI und
CLI, php_ini
-Parameter in NSAPI)
-
Die PHPRC-Umgebungsvariable. Vor PHP 5.2.0 wurde
diese nach dem unten angegebenen Registrierungsschlüssel geprüft.
-
Seit PHP 5.2.0 kann die Position der
php.ini
-Datei
für verschiedene Versionen von PHP gesetzt werden.
Die Wurzel der Registrierungsschlüssel hängt davon ab, ob es sich um ein
32- oder 64-bit System handelt, und ebenfalls von der PHP-Version.
Für 32-bit PHP auf einem 32-bit System, oder für 64-bit PHP auf
einem 64-bit System ist [(HKEY_LOCAL_MACHINE\SOFTWARE\PHP]
zu verwenden; für 32-bit PHP auf einem 64-bit System ist statt dessen
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\PHP]
] zu verwenden.
Für Installation mit derselben Bitanzahl
werden die folgende Registrierungsschlüssel in der angegebenen Reihenfolge durchsucht:
[HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x.y.z]
,
[HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x.y]
und
[HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x]
, wobei x, y und z
die Major-, Minor- und Release-Versionen von PHP darstellen.
Für 32-bit PHP-Versionen auf einem 64-bit System werden die folgenden
Registrierungsschlüssel in der angegebenen Reihenfolge durchsucht:
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6421Node\PHP\x.y.z]
,
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6421Node\PHP\x.y]
und
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6421Node\PHP\x]
, wobei x, y und z
die Major-, Minor- und Release-Versionen von PHP darstellen.
Falls ein
Wert für IniFilePath
in einem dieser Schlüssel
existiert, so wird der zuerst gefundene als Position der
php.ini
verwendet (nur unter Windows).
-
[HKEY_LOCAL_MACHINE\SOFTWARE\PHP]
bzw.
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\PHP]
, Wert von
IniFilePath
(nur unter Windows).
-
Aktuelles Arbeitsverzeichnis (außer CLI).
-
Das Webserververzeichnis (für SAPI-Module) oder das PHP-Verzeichnis
(andernfalls in Windows).
-
Windows-Verzeichnis (C:\windows
oder C:\winnt) (unter Windows)
oder die
--with-config-file-path
-Kompilierungsoption.
Falls die Datei php-SAPI.ini existiert (wobei SAPI die
verwendete SAPI ist, was als Dateinamen z.B.
php-cli.ini oder php-apache.ini
ergibt), wird diese anstelle der php.ini verwendet. Der Name der SAPI
kann durch php_sapi_name() ermittelt werden.
Hinweis:
Der Apache-Webserver wechselt beim Start das Arbeitsverzeichnis in das
Wurzelverzeichnis, weshalb PHP versucht, die php.ini aus dem
Wurzelverzeichnis zu lesen, wenn diese existiert.
Wie untenstehend gezeigt, können Umgebungsvariablen in php.ini verwendet
werden.
Beispiel #1 php.ini Umgebungsvariablen
; PHP_MEMORY_LIMIT ist der Name einer Umgebungsvariablen
memory_limit = ${PHP_MEMORY_LIMIT}
Die Optionen der php.ini für Extensions werden auf den Handbuchseiten
der jeweiligen Extensions behandelt. Die Beschreibung
der php.ini-Direktiven des Sprachkerns ist im Anhang verfügbar. Es werden
jedoch möglicherweise nicht alle PHP-Direktiven im Handbuch erläutert. Für
eine komplette Liste der in Ihrer PHP-Version verfügbaren Einstellungen
lesen Sie bitte die gut kommentierte php.ini. Möglicherweise kann die
» aktuellste php.ini aus dem
Git-Repository ebenfalls hilfreich sein.
Beispiel #2 php.ini-Beispiel
; Jeder Text in einer Zeile nach einem Semikolon, welches nicht
; in Anführungszeichen steht, wird ignoriert
[php] ; Abschnittsmarkierungen (Text in eckigen Klammern) werden ebenfalls ignoriert
; Boolesche Werte können auf einen der folgenden Werte eingestellt werden:
; true, on, yes
; oder false, off, no, none
register_globals = off
track_errors = yes
; Sie können Zeichenketten in Anführungszeichen einschließen
include_path = ".:/usr/local/lib/php"
; Backslashes werden wie alle anderen Zeichen behandelt
include_path = ".;c:\php\lib"
Seit PHP 5.1.0 ist es möglich, sich auf bereits definierte .ini-Variablen
innerhalb der .ini-Dateien zu beziehen. Zum Beispiel:
open_basedir = ${open_basedir}":/new/dir"
.
Scan-Verzeichnisse
Es ist möglich, PHP so zu konfigurieren, dass nach .ini Dateien in einem
Verzeichnis gesucht wird, nachdem php.ini gelesen wurde. Dies kann zur
Kompilierzeit durch Setzen der --with-config-file-scan-dir Option erfolgen. In
PHP 5.2.0 und neuer kann das Scan-Verzeichnis zur Laufzeit übersteuert
werden, indem die Umgebungsvariable
PHP_INI_SCAN_DIR gesetzt wird.
Es ist möglich, mehrere Verzeichnisse anzugeben, indem sie mit dem Plattform
spezifischen Pfadtrenner (;
unter Windows, NetWare und
RISC OS; :
auf allen anderen Plattformen; der Wert, den
PHP verwendet, is als PATH_SEPARATOR
verfügbar).
Wird ein leeres Verzeichnis in PHP_INI_SCAN_DIR angegeben,
dann wird PHP ebenfalls das zur Kompilierzeit mit
--with-config-file-scan-dir angegebene
Verzeichnis durchsuchen.
In jedem Verzeichnis wird PHP alle Dateien mit der Erweiterung
.ini
in alphabetischer Reihenfolge lesen. Eine gemäß der
Reihenfolge geordnete Liste der geladenen Dateien ist durch Aufruf von
php_ini_scanned_files() verfügbar, oder indem PHP mit der
--ini Option ausgeführt wird.