## Laufzeit-Konfiguration

Das Verhalten dieser Funktionen wird durch Einstellungen in der php.ini beeinflusst.

Konfigurationsoptionen für Fehler und Protokollierung
Name | Standard | Veränderbar | Changelog
--- | --- | --- | ---
error_reporting | NULL | `INI_ALL` |
display_errors | "1" | `INI_ALL` |
display_startup_errors | "1" | `INI_ALL` | Vor PHP 8.0.0 war der Standardwert `"0"`.
log_errors | "0" | `INI_ALL` |
log_errors_max_len | "1024" | `INI_ALL` | Seit PHP 8.0.0 wirkungslos; entfernt in PHP 8.1.0.
ignore_repeated_errors | "0" | `INI_ALL` |
ignore_repeated_source | "0" | `INI_ALL` |
report_memleaks | "1" | `INI_ALL` |
track_errors | "0" | `INI_ALL` | Seit PHP 7.2.0 veraltet; entfernt in PHP 8.0.0.
html_errors | "1" | `INI_ALL` |
xmlrpc_errors | "0" | `INI_SYSTEM` |
xmlrpc_error_number | "0" | `INI_ALL` |
docref_root | "" | `INI_ALL` |
docref_ext | "" | `INI_ALL` |
error_prepend_string | NULL | `INI_ALL` |
error_append_string | NULL | `INI_ALL` |
error_log | NULL | `INI_ALL` |
error_log_mode | 0o644 | `INI_ALL` | Verfügbar seit PHP 8.2.0
syslog.facility | "LOG_USER" | `INI_SYSTEM` | Verfügbar seit PHP 7.3.0.
syslog.filter | "no-ctrl" | `INI_ALL` | Verfügbar seit PHP 7.3.0.
syslog.ident | "php" | `INI_SYSTEM` | Verfügbar seit PHP 7.3.0.

Weitere Details und die Definitionen der INI_*-Konstanten sind unter Wo Konfigurationseinstellungen gesetzt werden können zu finden.

Hier eine kurze Erklärung der Konfigurationsoptionen:

`error_reporting` int

  Legt die Stufe der Fehlermeldung fest. Der Parameter ist entweder eine Ganzzahl, die ein Bitfeld darstellt, oder eine benannte Konstante. Die Stufen und Konstanten von error_reporting werden in Vordefinierte Konstanten und in der php.ini beschrieben. Mit der Funktion error_reporting() können die Werte zur Laufzeit festgelegt werden. Siehe auch die Direktive display_errors.

  Der Standardwert ist `E_ALL`.

  Vor PHP 8.0.0 war der Standardwert ``E_ALL` & ~`E_NOTICE` & ~`E_STRICT` & ~`E_DEPRECATED``. Das bedeutet, dass Fehler der Stufen `E_NOTICE`, `E_STRICT` und `E_DEPRECATED` nicht angezeigt wurden.

  > Hinweis: PHP-Konstanten außerhalb von PHP

  > Es ist nicht sinnvoll, PHP-Konstanten außerhalb von PHP, z. B. in der httpd.conf, zu verwenden, weshalb in solchen Fällen die int-Werte benötigt werden. Und weil im Laufe der Zeit weitere Fehlerstufen hinzugefügt werden, wird sich der Maximalwert (für `E_ALL`) wahrscheinlich ändern. Um also jetzt und auch in Zukunft alle Bitfelder abzudecken, sollte statt `E_ALL` ein größerer numerischer Wert wie `2147483647` (einschließlich aller Fehler, nicht nur `E_ALL`) verwendet werden.

`display_errors` string

  Legt fest, ob Fehlermeldungen als Teil der Ausgabe auf dem Bildschirm ausgegeben oder vor dem Benutzer verborgen werden sollen.

  Der Wert `"stderr"` sendet die Fehler an `stderr` statt an `stdout`.

  > Hinweis:

  > Diese Funktionalität ist für die Entwicklung gedacht und sollte niemals auf Produktionssystemen (z. B. Systemen, die mit dem Internet verbunden sind) verwendet werden.

  > Hinweis:

  > Obwohl display_errors zur Laufzeit gesetzt werden kann (mit ini_set()), hat dies keine Auswirkung, wenn das Skript fatale Fehler hat. Dies liegt daran, dass die gewünschte Aktion zur Laufzeit nicht ausgeführt wird.

`display_startup_errors` bool

  Auch wenn display_errors aktiviert ist, werden Fehler, die während des Startvorgangs von PHP auftreten, nicht angezeigt. Es wird dringend empfohlen, display_startup_errors nur für die Fehlersuche zu aktivieren.

`log_errors` bool

  Legt fest, ob vom Skript verursachte Fehlermeldungen im Fehlerprotokoll des Servers oder in error_log protokolliert werden sollen und ist daher serverspezifisch.

  > Hinweis:

  > Es wird dringend empfohlen, auf Produktiv-Websites Fehler zu protokollieren, anstatt sie anzuzeigen.

`log_errors_max_len` int

  Legt die maximale Länge von log_errors in Bytes fest. Informationen über die Quelle werden in error_log hinzugefügt. Der Standardwert ist 1024 und der Wert 0 bedeutet, dass die maximale Länge überhaupt nicht angewendet wird. Diese Länge gilt für protokollierte Fehler, angezeigte Fehler und auch für $php_errormsg, aber nicht für explizit aufgerufene Funktionen wie error_log().

  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.
`ignore_repeated_errors` bool

  Wiederholte Meldungen nicht protokollieren. Wiederholte Fehler müssen in derselben Datei in derselben Zeile auftreten, es sei denn, ignore_repeated_source ist auf true gesetzt.

`ignore_repeated_source` bool

  Die Quelle der Meldung ignorieren, wenn wiederholte Meldungen ignoriert werden. Wenn diese Einstellung auf On gesetzt ist, werden Fehler mit wiederholten Meldungen aus verschiedenen Dateien oder anderen Zeilen des Quellcodes nicht protokolliert.

`report_memleaks` bool

  Wenn dieser Parameter auf On gesetzt ist (die Standardeinstellung), wird ein Bericht über Speicherlecks angezeigt, die vom Zend-Speichermanager entdeckt wurden. Auf Posix-Plattformen wird dieser Bericht an stderr gesendet. Unter Windows wird er mittels OutputDebugString() an den Debugger gesendet und kann mit Tools wie » DbgView angesehen werden. Dieser Parameter ist nur in einem Debug-Build wirksam und nur, wenn `E_WARNING` in der Liste von error_reporting enthalten ist.

`track_errors` bool

  Wenn diese Option aktiviert ist, wird die letzte Fehlermeldung immer in der Variablen $php_errormsg abgelegt.

`html_errors` bool

  Wenn diese Option aktiviert ist, enthalten die Fehlermeldungen HTML-Tags. Die HTML-Fehlermeldungen sind anklickbar und verweisen auf die jeweilige Seite, auf der der Fehler oder die Funktion, die den Fehler verursacht hat, beschrieben wird. Diese Verweise werden durch docref_root und docref_ext beeinflusst.

  Ist diese Option deaktiviert, werden Fehlermeldungen nur als reiner Text angezeigt.

`xmlrpc_errors` bool

  Wenn diese Option aktiviert ist, wird die normale Fehlerberichterstattung deaktiviert und Fehler werden als XML-RPC-Fehlermeldungen formatiert.

`xmlrpc_error_number` int

  Wird als Wert für das XML-RPC-Element faultCode verwendet.

`docref_root` string

  Das neue Format für Fehlermeldungen enthält einen Verweis auf eine Seite, die den Fehler oder die Funktion, die den Fehler verursacht hat, beschreibt. Im Falle von Handbuchseiten kann das Handbuch in der gewünschten Sprache heruntergeladen und diese ini-Direktive auf die URL der lokalen Kopie gesetzt werden. Wenn die lokale Kopie des Handbuchs beispielsweise über `"/manual/"` erreichbar ist, kann einfach `docref_root=/manual/` verwendet werden. Darüber hinaus muss die Direktive docref_ext den Dateierweiterungen der Kopie entsprechend gesetzt werden: `docref_ext=.html`. Es ist auch möglich, externe Verweise zu verwenden, z. B. `docref_root=http://manual/en/` oder `docref_root="http://landonize.it/?how=url&theme=classic&filter=Landon&url=http%3A%2F%2Fwww.php.net%2F"`.

  In den meisten Fällen sollte der Wert von docref_root mit einem Schrägstrich `"/"` enden. Wie das zweite Beispiel oben zeigt, ist dies jedoch nicht zwingend notwendig.

  > Hinweis:

  > Dieses Feature ist als Hilfe bei der Entwicklung gedacht, da es das Nachschlagen einer Funktionsbeschreibung erleichtert. Es sollte jedoch niemals auf Produktionssystemen verwendet werden (z. B. auf Systemen, die mit dem Internet verbunden sind).

`docref_ext` string

  Siehe docref_root.

  > Hinweis:

  > Der Wert von docref_ext muss mit einem Punkt `"."` beginnen.

`error_prepend_string` string

  Eine Zeichenkette, die vor einer Fehlermeldung ausgegeben wird; wird nur verwendet, wenn die Fehlermeldung auf dem Bildschirm angezeigt wird. Der Hauptzweck besteht darin, der Fehlermeldung zusätzliches HTML-Markup voranstellen zu können.

`error_append_string` string

  Eine Zeichenkette, die nach einer Fehlermeldung ausgegeben wird; wird nur verwendet, wenn die Fehlermeldung auf dem Bildschirm angezeigt wird. Der Hauptzweck besteht darin, zusätzliches HTML-Markup an die Fehlermeldung anhängen zu können.

`error_log` string

  Der Name der Datei, in der Skriptfehler protokolliert werden sollen. Die Datei muss für den Benutzer des Webservers beschreibbar sein. Wenn der spezielle Wert `syslog` verwendet wird, werden die Fehler stattdessen an den Systemlogger gesendet. Unter Unix ist dies syslog(3) und unter Windows das Ereignisprotokoll. Siehe auch syslog(). Wenn diese Direktive nicht gesetzt ist, werden Fehler an den SAPI-Fehlerlogger gesendet. Beim Apache ist das z. B. ein Fehlerprotokoll und beim CLI ist es `stderr`. Siehe auch error_log().

`error_log_mode` int

  Der Dateimodus (Berechtigungen) für die in error_log beschriebene Datei.

`syslog.facility` string

  Gibt an, welche Art von Programm die Meldung protokolliert; nur wirksam, wenn error_log auf "syslog" gesetzt ist.

`syslog.filter` string

  Gibt den Filtertyp an, mit dem die protokollierten Nachrichten gefiltert werden sollen. Erlaubte Zeichen werden unverändert weitergegeben; alle anderen werden in ihrer hexadezimalen Darstellung mit dem Präfix `\x` geschrieben.

  - `all` – die protokollierte Zeichenkette wird an Zeilenumbrüchen geteilt und alle Zeichen werden unverändert übgegeben
  - `ascii` – die protokollierte Zeichenkette wird an Zeilenumbrüchen geteilt und alle nicht druckbaren 7-Bit-ASCII-Zeichen werden maskiert
  - `no-ctrl` – die protokollierte Zeichenkette wird an Zeilenumbrüchen aufgeteilt und alle nicht druckbaren Zeichen werden maskiert
  - `raw` – alle Zeichen werden unverändert und ohne Zeilenumbruch an den Systemlogger übergeben (entspricht dem Verhalten vor PHP 7.3)
  Diese Einstellung ist nur relevant, wenn error_log auf "syslog" gesetzt ist und wenn syslog() aufgerufen wird.

  > Hinweis:

  > Der Filtertyp `raw` ist seit PHP 7.3.8 und PHP 7.4.0 verfügbar.

  Diese Direktive wird unter Windows nicht unterstützt.
`syslog.ident` string

  Gibt die Zeichenkette für die Identifizierung an, die jeder Meldung vorangestellt wird; nur relevant, wenn error_log auf "syslog" gesetzt ist.

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