Das Verhalten dieser Funktionen wird durch Einstellungen in der php.ini beeinflusst.
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. |
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
.
Das bedeutet, dass Fehler der Stufen E_ALL
&
~E_NOTICE
&
~E_STRICT
&
~E_DEPRECATED
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 stattE_ALL
ein größerer numerischer Wert wie2147483647
(einschließlich aller Fehler, nicht nurE_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 Direktive wird unter Windows nicht unterstützt.Hinweis:
Der Filtertyp
raw
ist seit PHP 7.3.8 und PHP 7.4.0 verfügbar.
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.