## Beschreibung der php.ini-Direktiven des Sprachkerns

Diese Liste enthält die php.ini-Direktiven des PHP-Kerns, die Sie in Ihrer Installation verwenden können. Direktiven, die von einer der Erweiterungen verarbeitet werden, werden in den Handbuchseiten der jeweiligen Erweiterung aufgelistet und im Detail beschrieben. So können z. B. die Direktiven zur Konfiguration von Sessions auf den Session-Handbuchseiten gefunden werden.

> Hinweis:

> Die Voreinstellungen, die hier aufgeführt werden, gelten, wenn php.ini nicht geladen wurde. Die Werte für die Produktions- und Entwicklungs-php.ini können unterschiedlich sein.

## Sprachoptionen

Konfiguration der Sprache und verschiedene weitere Optionen
Name | Standard | Veränderbar | Changelog
--- | --- | --- | ---
short_open_tag | "1" | `INI_PERDIR` |
precision | "14" | `INI_ALL` |
serialize_precision | "-1" | `INI_ALL` | Vor PHP 7.1.0 war der Vorgabewert 17.
disable_functions | "" | Nur `INI_SYSTEM` |
disable_classes | "" | Nur php.ini |
exit_on_timeout | "" | `INI_ALL` |
expose_php | "1" | Nur php.ini |
hard_timeout | "2" | `INI_SYSTEM` | Verfügbar seit PHP 7.1.0.
zend.exception_ignore_args | "0" | `INI_ALL` | Verfügbar seit PHP 7.4.0
zend.multibyte | "0" | `INI_ALL` |
zend.script_encoding | NULL | `INI_ALL` |
zend.detect_unicode | NULL | `INI_ALL` |
zend.signal_check | "0" | `INI_SYSTEM` |
zend.assertions | "1" | `INI_ALL` mit Einschränkungen |
zend.exception_string_param_max_len | "15" | `INI_ALL` | Verfügbar seit PHP 8.0.0.

Hier eine kurze Erklärung der Konfigurationsoptionen:

`short_open_tag` bool

  Bestimmt, ob die Kurzform (`<? ?>`) des PHP-Öffnungs-Tags erlaubt werden soll. Wenn Sie PHP in Kombination mit XML verwenden wollen, können Sie diese Option deaktivieren, um `<?xml ?>` verwenden zu können. Andernfalls können Sie das Tag mit PHP ausgeben, z. B. `<?php echo '<?xml version="1.0"'; ?>`. Wenn diese Option deaktiviert ist, müssen Sie die Langform des PHP-Öffnungs-Tags (`<?php ?>`) verwenden.

  > Hinweis:

  > Diese Option hat keinen Einfluss auf die Kurzform `<?=`, die immer verfügbar ist.

`precision` int
  Die Anzahl der signifikanten Stellen, die in Gleitkommazahlen dargestellt werden. `-1` bedeutet, dass ein verbesserter Algorithmus zur Rundung solcher Zahlen verwendet wird.
`serialize_precision` int
  Die Anzahl der signifikanten Stellen, die gespeichert werden, wenn Gleitkommazahlen serialisiert werden. `-1` bedeutet, dass ein verbesserter Algorithmus zur Rundung solcher Zahlen verwendet wird.
`expose_php` bool

  Zeigt der Welt, dass PHP auf dem Server installiert ist. Dies beinhaltet die Version von PHP im HTTP-Header (z. B. X-Powered-By: PHP/5.3.7).

`disable_functions` string
  Mit dieser Direktive können bestimmte Funktionen deaktiviert werden. Die Funktionen werden als kommagetrennte Liste von Funktionsnamen übergeben. Seit PHP 8.0.0 wird durch das Deaktivieren einer Funktion deren Definition aufgehoben, sodass sie auf Benutzerebene neu definiert werden kann. Vor PHP 8.0.0 verhinderte das Deaktivieren einer Funktion nur, dass die Funktion aufgerufen werden konnte. Nur interne Funktionen können über diese Option deaktiviert werden. Benutzerdefinierte Funktionen sind nicht betroffen. Diese Direktive muss in der php.ini gesetzt werden. Sie kann nicht in der httpd.conf gesetzt werden.
`disable_classes` string

  Mit dieser Direktive können bestimmte Klassen deaktiviert werden. Die Klassen werden als kommagetrennte Liste von Klassennamen übergeben. Das Deaktivieren einer Klasse verhindert lediglich deren Instanziierung.

  Mit dieser Direktive können nur interne Klassen deaktiviert werden. Benutzerdefinierte Klassen sind hiervon nicht betroffen.

  Diese Direktive muss der in php.ini gesetzt werden. Sie kann beispielsweise nicht der in httpd.conf gesetzt werden.
`zend.assertions` int
  Falls diese Direktive auf `1` gesetzt ist, dann wird Assertion-Code erzeugt und ausgeführt (Entwicklungsmodus). Falls sie auf `0` gesetzt ist, dann wird Assertion-Code erzeugt, aber zur Laufzeit ausgelassen (nicht ausgeführt). Falls sie auf `-1` gesetzt ist, dann wird Assertion-Code nicht erzeugt, so dass die Assertions keine Laufzeitkosten haben (Produktionsmodus).

  > Hinweis:

  > Wurde der Prozess im Produktionsmodus gestartet, kann zend.assertions nicht zur Laufzeit geändert werden, da der Assertion-Code nicht erzeugt wurde.

  > Wurde der Prozess im Entwicklungsmodus gestartet, kann zend.assertions zur Laufzeit nicht auf `-1` gesetzt werden.

`zend.exception_string_param_max_len` int
  Die maximale Länge von String-Funktionsparametern in stringifizierten Stacktraces; muss zwischen `"0"` und `"1000000"` liegen.
`hard_timeout` int

  Wenn der in max_execution_time eingestellte Timeout erreicht wurde, baut die PHP-Laufzeitumgebung die Ressourcen geordnet ab. Wird dabei etwas blockiert, läuft der harte Timeout für die eingestellte Anzahl von Sekunden. Wenn der harte Timeout erreicht ist, wird PHP unvorschriftsmäßig beendet. Bei einem Wert von 0 wird der harte Timeout nie aktiviert.

  Wenn PHP nach einem harten Timeout beendet wird, sieht das in etwa so aus:

      Fatal error: Maximum execution time of 30+2 seconds exceeded (terminated) in Unknown on line 0

`zend.exception_ignore_args` bool

  Schließt Argumente aus Stacktraces, die von Exceptions generiert wurden, aus.

`zend.multibyte` bool

  Erlaubt das Parsen von Quellcode-Dateien in Multibyte-Kodierungen. Die Aktivierung von zend.multibyte ist erforderlich, um Zeichenkodierungen wie SJIS, BIG5, usw. zu verwenden, die besondere Zeichen in multibyte-Zeichenkettendaten enthalten. ISO-8859-1-kompatible Kodierungen wie UTF-8, EUC usw. erfordern diese Option nicht.

  Das Aktivieren von zend.multibyte erfordert, dass die mbstring-Erweiterung verfügbar ist.

`zend.script_encoding` string

  Dieser Wert wird verwendet, sofern am Anfang des Skripts keine declare(encoding=...)-Direktive verwendet wird. Wird eine ISO-8859-1-inkompatible Kodierung verwendet, müssen sowohl zend.multibyte als auch zend.script_encoding verwendet werden.

  Zeichenkettenliterale werden von zend.script_encoding in mbstring.internal_encoding übersetzt, als ob mb_convert_encoding() aufgerufen worden wäre.

`zend.detect_unicode` bool

  Erkenne, ob eine BOM (Byte Order Mark) vorhanden ist und prüfe, ob die Datei valide Multibyte-Zeichen enthält. Diese Erkennung wird vorgenommen, bevor __halt_compiler() verarbeitet wird. Diese Option ist nur im Zend-Multibyte-Modus verfügbar.

`zend.signal_check` bool

  Legt fest, ob während des Herunterfahrens geprüft werden soll, ob Signal-Handler ersetzt wurden.

`exit_on_timeout` bool

  Diese Einstellung betrifft nur Apache1 mit mod_php. Sie zwingt einen Apache-Kindprozess, sich zu beenden, wenn ein PHP-Timeout auftritt. Solch ein Timeout verursacht einen internen longjmp()-Aufruf, welches einige Erweiterungen in einem inkonsistenten Zustand hinterlassen kann. Durch das Beenden des Prozesses werden ausstehende Locks und allozierter Arbeitsspeicher freigegeben.

## Limitierung von Ressourcen

Limitierung von Ressourcen
Name | Standard | Veränderbar | Changelog
--- | --- | --- | ---
memory_limit | "128M" | `INI_ALL` |

Hier eine kurze Erklärung der Konfigurationsoptionen:

`memory_limit` int

  Legt die maximale Menge an Speicher in Bytes fest, die ein Skript verbrauchen darf. Damit können schlecht geschriebene Skripte daran gehindert werden, den gesamten verfügbaren Speicher eines Servers "aufzufressen". Um keine Speicherobergrenze festzulegen, setzen Sie diese Direktive auf den Wert `-1`.

  Wird ein Wert vom Typ int verwendet, wird dieser Wert in Bytes gemessen. Es kann auch die Kurzschreibweise verwendet werden, wie in dieser FAQ beschrieben.

Siehe auch max_execution_time.

## Leistungsoptimierung

Leistungsoptimierung
Name | Standard | Veränderbar | Changelog
--- | --- | --- | ---
realpath_cache_size | "4M" | `INI_SYSTEM` | Vor PHP 7.0.16 and 7.1.2 war die Voreinstellung `"16K"`
realpath_cache_ttl | "120" | `INI_SYSTEM` |

> Hinweis:

> Die Verwendung von open_basedir deaktiviert den realpath-Cache.

Hier eine kurze Erklärung der Konfigurationsoptionen:

`realpath_cache_size` int

  Legt die Größe des von PHP nutzbaren realpath-Caches fest. Dieser Wert sollte auf Systemen erhöht werden, auf denen PHP viele Dateien öffnet, um die Anzahl von Dateioperationen widerzuspiegeln.

  Die Größe stellt die Gesamtzahl von Bytes der gespeicherten Pfad-Zeichenketten dar, plus die Größe der Daten, die mit dem Cache-Eintrag verknüpft sind. Das bedeutet, dass der Cache größer sein muss, um längere Pfade im Cache zu speichern. Dieser Wert steuert nicht direkt die Anzahl der individuellen Pfade, die im Cache vorgehalten werden können.

  Die benötigte Größe für die Cache-Eintragsdaten ist systemabhängig.

`realpath_cache_ttl` int

  Zeitspanne (in Sekunden), während der realpath-Informationen einer Datei oder eines Verzeichnisses gecacht bleiben. Für Systeme, auf denen sich die Dateien kaum ändern, sollte man die Erhöhung dieses Wertes in Betracht ziehen.

## Verarbeitung von Daten

Konfigurationsoptionen für die Verarbeitung von Daten
Name | Standard | Veränderbar | Changelog
--- | --- | --- | ---
arg_separator.output | "&" | `INI_ALL` |
arg_separator.input | "&" | `INI_PERDIR` |
variables_order | "EGPCS" | `INI_PERDIR` |
request_order | "" | `INI_PERDIR` |
auto_globals_jit | "1" | `INI_PERDIR` |
register_argc_argv | "1" | `INI_PERDIR` |
enable_post_data_reading | "1" | `INI_PERDIR` |
post_max_size | "8M" | `INI_PERDIR` |
auto_prepend_file | NULL | `INI_PERDIR` |
auto_append_file | NULL | `INI_PERDIR` |
default_mimetype | "text/html" | `INI_ALL` |
default_charset | "UTF-8" | `INI_ALL` |
input_encoding | "" | `INI_ALL` |
output_encoding | "" | `INI_ALL` |
internal_encoding | "" | `INI_ALL` |

Hier eine kurze Erklärung der Konfigurationsoptionen:

`arg_separator.output` string

  Das Trennzeichen, das in von PHP generierten URLs verwendet wird, um Argumente abzutrennen.

`arg_separator.input` string

  Liste der Trennzeichen, die von PHP beim Parsen von URLs zu Variablen verwendet werden.

  > Hinweis:

  > Jeder Buchstabe in dieser Option wird als Trennzeichen interpretiert!

`variables_order` string

  Legt die Reihenfolge der EGPCS- (`E`nvironment (Umgebungsvariablen), `G`et, `P`ost, `C`ookie und `S`erver) Variablenverarbeitung fest. Wenn zum Beispiel variables_order auf `"SP"` eingestellt ist, wird PHP die superglobals $_SERVER und $_POST, nicht aber $_ENV, $_GET und $_COOKIE anlegen. Wird dieser Wert auf "" gesetzt, so werden keine superglobals erzeugt.

  Warnung

  Sowohl im CGI- als auch im FastCGI-SAPI enthält $_SERVER immer auch Variablen aus dem Environment; `S` ist hier immer äquivalent zu `ES`, unabhängig davon, ob `E` noch anderweitig in der Direktive verwendet wird.

  > Hinweis:

  > Der Inhalt und die Reihenfolge von $_REQUEST sind von dieser Direktive ebenfalls betroffen.

`request_order` string

  Diese Direktive legt fest, in welcher Reihenfolge PHP GET-, POST- und Cookie-Variablen im _REQUEST-Array ablegt. Die Registrierung erfolgt dabei von links nach rechts und neuere Einträge überschreiben bisherige Werte gleichen Namens.

  Ist diese Direktive nicht gesetzt, so wird stattdessen variables_order für die Inhalte von $_REQUEST ausgewertet.

  Beachten Sie, dass die Standard-php.ini-Dateien `'C'` für Cookies aus Sicherheitsgründen nicht angeben.

`auto_globals_jit` bool

  Wenn eingeschaltet, werden die SERVER-, REQUEST- und ENV-Variablen erzeugt, sobald diese zum ersten Mal verwendet werden (Just In Time), statt zum Ausführungsbeginn des Skriptes. Wenn diese Variablen in einem Skript nicht verwendet werden, bringt das Einschalten dieser Einstellung einen Geschwindigkeitszuwachs.

  Warnung

  Ob SERVER-, REQUEST- und ENV-Variablen verwendet werden, wird bereits zur Kompilationszeit geprüft. Ein Zugriff über variable Variablen führt daher nicht dazu, dass diese initialisiert werden.

`register_argc_argv` bool
  Bestimmt, ob die argv- & argc-Variablen deklariert werden sollen (betrifft die GET-Informationen). Siehe auch Kommandozeile.
`enable_post_data_reading` bool
  Wenn diese Option deaktiviert ist, werden $_POST und $_FILES nicht gefüllt. Der einzige Weg, in diesem Fall die POST-Daten zu lesen, ist der php://input-Stream-Wrapper. Dies kann nützlich sein, um Requests umzuleiten oder um die POST-Daten speichereffizient zu verarbeiten.
`post_max_size` int
  Setzt die maximal erlaubte Größe von POST-Daten. Diese Option betrifft auch den Datei-Upload. Um größere Dateien hochzuladen, muss der Wert größer sein als upload_max_filesize. Allgemein sollte memory_limit größer als `post_max_size` sein. Wird ein Wert vom Typ int verwendet, wird dieser Wert in Bytes gemessen. Es kann auch die Kurzschreibweise verwendet werden, wie in dieser FAQ beschrieben. Wenn die Größe der POST-Daten größer ist als post_max_size, werden die $_POST- und $_FILES-Superglobals leer sein. Dies kann auf verschiedene Weisen verfolgt werden, z. B. indem man die $_GET-Variable an das Skript, das die Daten verarbeitet, weitergibt, d. h. `<form action="edit.php?processed=1">` und daraufhin prüft, ob $_GET['processed'] gesetzt ist.

  > Hinweis:

  > PHP gestattet die Angabe von K für kilo, M für mega und G für Giga bei der Angabe von Werten und rechnet diese automatisch um. Vermeiden Sie aber beim Einsatz von 32bit-Versionen die Angabe von Werten, die das Limit für vorzeichenbehaftete 32bit-Integer überschreiten, da Ihre Skripte sonst fehlschlagen werden.

  Changelog für `post_max_size`
  Version | Beschreibung
  --- | ---
  5.3.4 | `post_max_size` = 0 deaktiviert die Begrenzung nicht, wenn der Content-Type application/x-www-form-urlencoded oder PHP nicht bekannt ist.
  5.3.2, 5.2.12 | Erlaubt unbegrenzte POST-Größe durch Setzen von `post_max_size` auf 0.

`auto_prepend_file` string

  Hier können Sie eine Datei angeben, die automatisch vor der Hauptdatei aufgerufen wird. Die Datei wird in die aufgerufene Datei eingebettet, als wenn Sie sie mittels der Funktion require eingebunden hätten, dabei wird ein gesetzter include_path beachtet.

  Der spezielle Wert `none` deaktiviert Auto-Prepending.

`auto_append_file` string

  Hier können Sie eine Datei angeben, die automatisch nach der Hauptdatei aufgerufen wird. Die Datei wird in die aufgerufene Datei eingebettet, als wenn Sie sie mittels der Funktion require eingebunden hätten, dabei wird ein gesetzter include_path beachtet.

  Der spezielle Wert `none` deaktiviert Auto-Appending.

  > Hinweis: Wird das Skript mit der Funktion exit() beendet, dann wird Auto-Appending nicht aktiv.

`default_mimetype` string

  Standardmäßig gibt PHP den Medientyp unter Verwendung des Content-Type-Headers aus. Um das zu unterbinden, ist diese Einstellung leer zu lassen.

  PHP's eingebauter Medientyp ist text/html.

`default_charset` string

  "UTF-8" ist der Vorgabewert und dieser Wert wird als Standard-Zeichenkodierung für htmlentities(), html_entity_decode() und htmlspecialchars() verwendet, wenn der Parameter `encoding` ausgelassen wird. Der Wert von `default_charset` wird ebenfalls verwendet, um den Standard-Zeichensatz für iconv-Funktionen festzulegen, wenn die `iconv.input_encoding`-, `iconv.output_encoding`- und `iconv.internal_encoding`-Konfigurationsoptionen nicht gesetzt sind, und für mbstring-Funktionen, wenn die `mbstring.http_input`-, `mbstring.http_output`- und `mbstring.internal_encoding`-Konfigurationsoptionen nicht gesetzt sind.

  Alle Versionen von PHP verwenden diesen Wert als Zeichensatz im Standard-Content-Type-Header, der von PHP gesendet wird, wenn der Header nicht durch einen Aufruf von header() überschrieben wurde.

  `default_charset` auf einen leeren Wert zu setzen, wird nicht empfohlen.

`input_encoding` string

  Diese Einstellung wird für Multibyte-Module wie mbstring und iconv verwenden. Standardwert ist leer.

`output_encoding` string

  Diese Einstellung wird für Multibyte-Module wie mbstring und iconv verwenden. Standardwert ist leer.

`internal_encoding` string

  Diese Einstellung wird für Multibyte-Module wie mbstring und iconv verwenden. Standardwert ist leer. Falls leer, dann wird default_charset verwendet.

## Pfade und Verzeichnisse

Konfigurationsoptionen für Pfade und Verzeichnisse
Name | Standard | Veränderbar | Changelog
--- | --- | --- | ---
include_path | ".;/path/to/php/pear" | `INI_ALL` |
open_basedir | NULL | `INI_ALL` |
doc_root | NULL | `INI_SYSTEM` |
user_dir | NULL | `INI_SYSTEM` |
user_ini.cache_ttl | "300" | `INI_SYSTEM` |
user_ini.filename | ".user.ini" | `INI_SYSTEM` |
extension_dir | "/path/to/php" | `INI_SYSTEM` |
extension | NULL | Nur php.ini |
zend_extension | NULL | Nur php.ini |
cgi.check_shebang_line | "1" | `INI_SYSTEM` |
cgi.discard_path | "0" | `INI_SYSTEM` |
cgi.fix_pathinfo | "1" | `INI_SYSTEM` |
cgi.force_redirect | "1" | `INI_SYSTEM` |
cgi.nph | "0" | `INI_SYSTEM` |
cgi.redirect_status_env | NULL | `INI_SYSTEM` |
cgi.rfc2616_headers | "0" | `INI_ALL` |
fastcgi.impersonate | "0" | `INI_SYSTEM` |
fastcgi.logging | "1" | `INI_SYSTEM` |

Hier eine kurze Erklärung der Konfigurationsoptionen:

`include_path` string

  Hier können Sie eine Liste von Verzeichnissen angeben, in welchen die Funktionen require, include, fopen(), file(), readfile() und file_get_contents() nach Dateien suchen. Das Format ist ähnlich zur PATH-Umgebungsvariablen des jeweiligen Systems: Eine Liste von Verzeichnissen, getrennt durch einen Doppelpunkt unter Unix oder ein Semikolon unter Windows.

  Wenn PHP eine Datei einbinden soll, geht es alle Einträge im Include-Pfad einzeln durch. Zuerst wird der erste Pfad getestet und wenn die Datei dort nicht gefunden wird, wird der nächste Pfad überprüft, bis letztendlich entweder die Datei gefunden wird oder aber PHP ein `E_WARNING` oder `E_ERROR` zurückgibt. Der Include-Pfad kann auch zur Laufzeit mit Hilfe der Funktion set_include_path() geändert werden.

  Beispiel #1 include_path unter Unix

      include_path=".:/php/includes"

  Beispiel #2 include_path unter Windows

      include_path=".;c:\php\includes"

  Ein `.` in dieser Option ermöglicht, Dateien relativ zum aktuellen Verzeichnis einzubinden. Es ist jedoch effizienter, explizit `include './Datei'` zu schreiben, anstatt PHP zu zwingen jedes Mal den Include-Pfad zu nutzen.

  > Hinweis:

  > Auf `ENV`-Variablen kann in .ini-Dateien ebenfalls zugegriffen werden. Daher ist es möglich, das Home-Verzeichnis durch `${LOGIN}` und `${USER}` zu referenzieren.

  > Umgebungsvariablen können zwischen verschiedenen Server-APIs variieren, da diese Umgebungen unterschiedlich sein können.

  Beispiel #3 include_path unter Unix unter Verwendung der ${USER}-Umgebungsvariablen

      include_path = ".:${USER}/pear/php"

`open_basedir` string

  Begrenzt die Dateien, auf die von PHP zugegriffen werden kann, auf einen bestimmten Ordner inklusive seiner Unterordner.

  Wenn ein Skript versucht, auf eine Datei zuzugreifen, zum Beispiel mit include oder fopen(), wird der Ort der Datei geprüft. Wenn die Datei nicht im Verzeichnisbaum liegt, der in open_basedir angegeben ist, wird PHP nicht auf die Datei zugreifen. Alle symbolischen Verknüpfungen werden aufgelöst, sodass es nicht möglich ist, diese Beschränkung mit einem Symlink zu umgehen. Wenn die Datei nicht existiert, kann die Verknüpfung nicht aufgelöst werden und der Dateiname wird mit (einem aufgelösten) open_basedir verglichen.

  open_basedir kann sich auf mehr als nur Dateisystemfunktionen auswirken. Wenn zum Beispiel `MySQL` so konfiguriert ist, dass es den `mysqlnd`-Treiber verwendet, wird `LOAD DATA INFILE` von open_basedir beeinflusst. Ein Großteil der erweiterten Funktionalität von PHP verwendet `open_basedir` auf diese Weise.

  Der spezielle Wert `.` gibt an, dass das Arbeitsverzeichnes des Skriptes als Basis-Verzeichnis verwendet wird. Dies ist gefährtlich, da das Arbeitsverzeichnis mit chdir() einfach geändert werden kann.

  In der Konfigurationsdatei httpd.conf kann open_basedir genau wie jede andere Direktive mit "`php_admin_value open_basedir none`" geändert oder deaktiviert werden (z. B. für einige virtuelle Hosts).

  Unter Windows müssen die Verzeichnisse mit einem Semikolon getrennt werden, auf allen anderen Systemen mit einem Doppelpunkt. Wenn PHP als Apache-Modul läuft, erbt open_basedir seinen Pfad nun automatisch von übergeordneten Verzeichnissen.

  Die mit open_basedir angegebene Einschränkung ist ein Verzeichnisname, kein Präfix.

  Standardmäßig dürfen alle Dateien geöffnet werden.

  > Hinweis: open_basedir kann zur Laufzeit weiter eingeschränkt werden. Das heißt, wenn open_basedir laut php.ini auf `/www/` gesetzt ist, kann die Direktive zur Laufzeit mit ini_set() beispielsweise weiter auf `/www/tmp/` begrenzt werden. Wenn mehrere Verzeichnisse aufgelistet werden, kann die Konstante `PATH_SEPARATOR` unabhängig vom Betriebssystem als Trennzeichen verwendet werden. Seit PHP 8.3.0 akzeptiert open_basedir keinen zur Laufzeit mittels ini_set() gesetzten Pfad mehr, der das übergeordnete Verzeichnis (`..`) enthält.

  > Hinweis:

  > Die Verwendung von open_basedir setzt realpath_cache_size auf `0` und deaktiviert somit den realpath-Cache.

  Achtung

  `open_basedir` ist nur ein zusätzliches Sicherheitsnetz, das in keiner Weise umfassend ist und daher nicht als verlässlich angesehen werden kann, wenn Sicherheit erforderlich ist.

`doc_root` string

  Hier wird das Stammverzeichnis der PHP-Skripte auf dem Server angegeben. Diese Option wird nur verwendet, wenn ein Wert angegeben wird. Wenn PHP nicht mit FORCE_REDIRECT kompiliert wurde, sollten Sie doc_root setzen, wenn Sie PHP als CGI-Version laufen lassen (betrifft alle Webserver außer IIS). Die Alternative ist, die Option cgi.force_redirect zu verwenden.

`user_ini.cache_ttl` int

`user_ini.filename` string

`user_dir` string

  Der Basisname des Verzeichnisses, das für Benutzer-Verzeichnisse mit PHP-Dateien verwendet wird, z. B. public_html.

`extension_dir` string

  Das Verzeichnis, in dem PHP dynamisch zu ladende Erweiterungen findet. Es wird empfohlen, einen absoluten Pfad anzugeben. Siehe auch enable_dl und dl().

`extension` string

  Dynamisch zu ladende Erweiterungen, die geladen werden sollen, wenn PHP gestartet wird.

`zend_extension` string

  Der Name einer dynamisch ladbaren Zend-Erweiterung (beispielsweise Xdebug), welche geladen werden soll, wenn PHP startet.

`cgi.check_shebang_line` bool

  Kontrolliert, ob die CGI-Version von PHP am Anfang des auszuführenden Skripts nach einer Zeile sucht, die mit `#!` (Shebang) beginnt. Diese Zeile könnte notwendig sein, wenn das Skript sowohl die eigenständige Ausführung als auch die mittels PHP-CGI unterstützt. PHP überspringt diese Zeile im CGI-Modus und ignoriert ihren Inhalt, wenn diese Direktive eingeschaltet ist.

`cgi.discard_path` bool

  Ist dies aktiviert, kann das PHP-CGI-Binary sicher außerhalb des Web-Verzeichnisbaums abgelegt werden, ohne dass jemand in der Lage ist, die .htaccess-Sicherheit zu umgehen.

`cgi.fix_pathinfo` bool

  Stellt echte `PATH_INFO`/`PATH_TRANSLATED`-Unterstützung für CGI zur Verfügung. Das frühere Verhalten von PHP war, `PATH_TRANSLATED` einfach auf `SCRIPT_FILENAME` zu setzen und nicht auf `PATH_INFO`. Für weitere Informationen zu `PATH_INFO` siehe die CGI-Spezifikation. Wenn Sie diesen Wert auf `1` setzen, hat dies zur Folge, dass PHP-CGI seine Pfade entsprechend der Spezifikation anpasst. Bei einem Wert von Null verhält sich PHP entsprechend den früheren Versionen. Standardmäßig ist es eingeschaltet. Es wird empfohlen, Ihre Skripte dahingehend anzupassen, statt `PATH_TRANSLATED` `SCRIPT_FILENAME` zu verwenden.

`cgi.force_redirect` bool

  Wenn PHP als CGI-Version läuft, wird unter den meisten Webservern cgi.force_redirect benötigt, um Sicherheit zu garantieren. Wenn diese Option nicht angegeben wird, setzt PHP sie standardmäßig auf "on". Auf Ihre eigene Gefahr hin können Sie dies ausschalten ("off").

  > Hinweis:

  > Windows-Benutzer: Unter IIS muss diese Option ausgeschaltet werden. Für OmniHTTPD und Xitami gilt selbiges.

`cgi.nph` bool

  Ist cgi.nph aktiviert, zwingt es CGI immer, Status: 200 für jede Anfrage zu senden.

`cgi.redirect_status_env` string

  Wenn cgi.force_redirect eingeschaltet ist und Sie nicht den Apache- oder Netscape-Webserver (iPlanet) verwenden, müssen Sie eventuell eine Umgebungsvariable setzen, damit PHP weiß, ob es die Ausführung fortführen darf.

  > Hinweis:

  > Das Setzen dieser Variablen kann Sicherheitsrisiken verursachen, Sie sollten also genau wissen, was Sie tun.

`cgi.rfc2616_headers` bool

  Bestimmt, welcher Typ von Headern verwendet werden soll, wenn HTTP-Antwortcodes gesendet werden. Wenn diese Option deaktiviert ist, sendet PHP einen » RFC 3875-"Status:"-Header, der von Apache und anderen Webservern unterstützt wird. Ist sie aktiviert, sendet PHP einen zu » RFC 2616 konformen Header.

  Ist diese Option aktiviert, und Sie führen PHP in einer CGI-Umgebung (z. B. PHP-FPM) aus, sollten Sie keine üblichen RFC 2616 HTTP Status-Response-Header verwenden; stattdessen sollten Sie ihre RFC 3875-Pendants nutzen, z. B. sollten Sie anstelle von header("HTTP/1.0 404 Not found"); header("Status: 404 Not Found"); verwenden.

  Wenn Sie diese Option nicht verstehen, lassen Sie sie deaktiviert.

`fastcgi.impersonate` bool

  FastCGI unterstützt unter dem IIS (auf WINNT-basierten Betriebssystemen) die Möglichkeit, Sicherheitsmerkmale des aufrufenden Clients zu bestimmen. Dies ermöglicht es dem IIS, den Sicherheitskontext zu bestimmen, in dem der Zugriff läuft. mod_fastcgi unter Apache unterstützt diese Funktion zur Zeit nicht (17.03.2002). Aktivieren Sie diese Option, wenn Sie den IIS verwenden. Der Standardwert ist deaktiviert.

`fastcgi.logging` bool

  Schaltet das SAPI-Logging an, wenn FastCGI verwendet wird. Standardmäßig ist das Logging aktiviert.

## Datei-Uploads

Konfigurationsoptionen für Datei-Uploads
Name | Standard | Veränderbar | Changelog
--- | --- | --- | ---
file_uploads | "1" | `INI_SYSTEM` |
upload_tmp_dir | NULL | `INI_SYSTEM` |
max_input_nesting_level | 64 | `INI_PERDIR` |
max_input_vars | 1000 | `INI_PERDIR` |
upload_max_filesize | "2M" | `INI_PERDIR` |
max_file_uploads | 20 | `INI_PERDIR` |

Hier eine kurze Erklärung der Konfigurationsoptionen:

`file_uploads` bool

  Bestimmt, ob Datei-Uploads per HTTP erlaubt sind. Siehe auch die Optionen upload_max_filesize, upload_tmp_dir und post_max_size.

`upload_tmp_dir` string

  Das temporäre Verzeichnis, in dem Dateien während des Uploads gespeichert werden. Für dieses Verzeichnis muss der Benutzer, unter dem PHP läuft, Schreibberechtigung haben. Wenn hier nichts angeben wird, verwendet PHP das Standardverzeichnis des Systems.

  Wenn das hier angegebene Verzeichnis nicht beschreibbar ist, nutzt PHP stattdessen das Standardverzeichnis für temporäre Dateien. Wenn open_basedir genutzt wird, muss dieses Standardverzeichnis erlaubt sein, damit Uploads funktionieren.

`upload_max_filesize` int

  Die maximale Größe, die eine hochgeladene Datei haben darf.

  post_max_size muss größer als dieser Wert sein.

  Wird ein Wert vom Typ int verwendet, wird dieser Wert in Bytes gemessen. Es kann auch die Kurzschreibweise verwendet werden, wie in dieser FAQ beschrieben.
`max_file_uploads` int

  Die maximale Anzahl an Dateien, die gleichzeitig hochgeladen werden kann. Upload-Formularfelder, die leer gelassen wurden, zählen nicht zu diesem Limit.

## Allgemeines SQL

Konfigurationsoptionen für allgemeines SQL
Name | Standard | Veränderbar | Changelog
--- | --- | --- | ---
sql.safe_mode | "0" | `INI_SYSTEM` | Entfernt in PHP 7.2.0

Hier eine kurze Erklärung der Konfigurationsoptionen:

`sql.safe_mode` bool

  Wenn diese Option eingeschaltet wird, werden Datenbankverbindungsfunktionen, die Standardwerte vorgeben, diese Werte anstelle der angegebenen Parameter verwenden. Zu Informationen über die Standardwerte können Sie einen Blick auf die Dokumentation der Verbindungsfunktionen der jeweiligen Datenbank werfen.

  Warnung

  Dieses Feature wurde von PHP 7.2.0 an ENTFERNT.

## Windows-spezifisch

Windows-spezifische Optionen
Name | Standard | Veränderbar | Changelog
--- | --- | --- | ---
windows.show_crt_warning | "0" | `INI_ALL` |

Hier eine kurze Erklärung der Konfigurationsoptionen:

`windows.show_crt_warning` bool

  Wenn diese Direktive angeschaltet ist, werden Windows CRT Warnings angezeigt.

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open