International PHP Conference Berlin 2025

Vordefinierte Konstanten

Die aufgelisteten Konstanten stehen immer zur Verfügung, da sie zum Grundbestand von PHP gehören.

Die folgenden Konstanten (entweder die entsprechenden numerischen Werte oder ihre symbolischen Namen) werden als Bitmasken verwendet, um anzugeben, welche Fehler gemeldet werden sollen. Es ist möglich, diese Werte mit den Bit-Operatoren zu kombinieren oder bestimmte Fehlertypen auszublenden.

Tipp

In der php.ini können die Namen der Konstanten anstelle der reinen numerischen Werte, denen sie entsprechen, verwendet werden. Innerhalb der php.ini werden jedoch nur die Operatoren |, ~, ^, ! und & verstanden.

Warnung

Es ist nicht möglich, die symbolischen Namen außerhalb von PHP zu verwenden. Zum Beispiel muss in der httpd.conf stattdessen der berechnete Wert der Bitmaske verwendet werden.

E_ERROR (int)
Fatale Laufzeit-Fehler. Dies zeigt Fehler an, die nicht behoben werden können, z. B. Probleme bei der Speicherzuweisung. Die Ausführung des Skripts wird abgebrochen. Wert der Konstante: 1
E_WARNING (int)
Warnungen (nicht-fatale Fehler) zur Laufzeit des Skripts. Die Ausführung des Skripts wird nicht abgebrochen. Wert der Konstante: 2
E_PARSE (int)
Parser-Fehler während der Übersetzung. Parser-Fehler können nur vom Parser erzeugt werden. Wert der Konstante: 4
E_NOTICE (int)
Benachrichtigungen während der Laufzeit. Sie zeigen an, dass im Skript irgendetwas gefunden wurde, was einen Fehler verursachen könnte. Es ist aber genauso möglich, dass Benachrichtigungen im ordnungsgemäßen Ablauf eines Skripts ausgegeben werden. Wert der Konstante: 8
E_CORE_ERROR (int)
Fatale Fehler, die beim Starten von PHP auftreten. Dies ist ähnlich wie E_ERROR, nur dass diese Fehlermeldungen vom PHP-Kern erzeugt werden. Wert der Konstante: 16
E_CORE_WARNING (int)
Warnungen (nicht-fatale Fehler), die beim Starten von PHP auftreten. Dies ist ähnlich wie E_WARNING, nur dass diese Warnungen vom PHP-Kern erzeugt werden. Wert der Konstante: 32
E_COMPILE_ERROR (int)
Fatale Fehler zur Übersetzungszeit. Dies ist ähnlich wie E_ERROR, nur dass diese Fehlermeldungen von der Zend-Scripting-Engine erzeugt werden. Wert der Konstante: 64
E_COMPILE_WARNING (int)
Warnungen (nicht-fatale Fehler) zur Übersetzungszeit. Dies ist ähnlich wie E_WARNING, nur dass diese Warnungen von der Zend Scripting Engine erzeugt werden. Wert der Konstante: 128
E_DEPRECATED (int)
Benachrichtigungen über veralteten Code zur Laufzeit. Wenn diese Option aktiviert ist, werden Warnungen über Code ausgegeben, der in zukünftigen Versionen nicht mehr funktionieren wird. Wert der Konstante: 8192
E_USER_ERROR (int)
Benutzerdefinierte Fehlermeldungen. Dies ist ähnlich wie E_ERROR, nur dass diese Fehlermeldungen im PHP-Code mit trigger_error() erzeugt werden. Wert der Konstante: 256
Warnung

Die Verwendung dieser Konstante mit trigger_error() ist seit PHP 8.4.0 veraltet. Es wird empfohlen, entweder eine Exception zu werfen oder stattdessen exit() aufzurufen.

E_USER_WARNING (int)
Benutzerdefinierte Warnungen. Dies ist ähnlich wie E_WARNING, nur dass diese Warnungen im PHP-Code mit trigger_error() erzeugt werden. Wert der Konstante: 512
E_USER_NOTICE (int)
Benutzerdefinierte Benachrichtigungen. Dies ist ähnlich wie E_NOTICE, nur dass diese Benachrichtigungen im PHP-Code mit trigger_error() erzeugt werden. Wert der Konstante: 1024
E_USER_DEPRECATED (int)
Benutzerdefinierte Warnmeldung über veralteten Code. Dies entspricht E_DEPRECATED, nur dass diese Benachrichtigungen im PHP-Code mit trigger_error() erzeugt werden. Wert der Konstante: 16384
E_STRICT (int)
Vorschläge, die PHP zur Laufzeit über den ausgeführten Code ausgibt, um die Aufwärtskompatibilität zu gewährleisten. Wert der Konstante: 2048
Warnung

Diese Stufe der Fehlermeldungen wird nicht mehr verwendet und ist seit PHP 8.4.0 veraltet.

E_RECOVERABLE_ERROR (int)
"Exceptions" der Legacy-Engine, die einem abfangbaren fatalen Fehler entsprechen. Ähnlich wie Error, aber sie müssen von einem benutzerdefinierten Fehlerhandler abgefangen werden (siehe set_error_handler()). Wenn ein solcher Fehler nicht abgefangen wird, verhält er sich wie E_ERROR. Wert der Konstante: 4096

Hinweis: Diese Stufe von Fehlermeldungen wird praktisch nicht verwendet. Der einzige Fall, in dem sie auftreten kann, ist, wenn die Interpretation eines Objekts als bool fehlschlägt. Dies kann nur bei internen Objekten vorkommen. Das häufigste Beispiel vor PHP 8.4.0 ist die Verwendung einer GMP-Instanz in einer Bedingung.

E_ALL (int)
Eine Bitmaske, die alle Fehler, Warnungen und Hinweise enthält. Wert der Konstante: 32767
add a note

User Contributed Notes 8 notes

up
24
Andy at Azurite (co uk)
13 years ago
-1 is also semantically meaningless as a bit field, and only works in 2s-complement numeric representations. On a 1s-complement system -1 would not set E_ERROR. On a sign-magnitude system -1 would set nothing at all! (see e.g. http://en.wikipedia.org/wiki/Ones%27_complement)

If you want to set all bits, ~0 is the correct way to do it.

But setting undefined bits could result in undefined behaviour and that means *absolutely anything* could happen :-)
up
23
russthom at fivegulf dot com
12 years ago
[Editor's note: fixed E_COMPILE_* cases that incorrectly returned E_CORE_* strings. Thanks josiebgoode.]

The following code expands on Vlad's code to show all the flags that are set. if not set, a blank line shows.

<?php
$errLvl
= error_reporting();
for (
$i = 0; $i < 15; $i++ ) {
print
FriendlyErrorType($errLvl & pow(2, $i)) . "<br>\\n";
}

function
FriendlyErrorType($type)
{
switch(
$type)
{
case
E_ERROR: // 1 //
return 'E_ERROR';
case
E_WARNING: // 2 //
return 'E_WARNING';
case
E_PARSE: // 4 //
return 'E_PARSE';
case
E_NOTICE: // 8 //
return 'E_NOTICE';
case
E_CORE_ERROR: // 16 //
return 'E_CORE_ERROR';
case
E_CORE_WARNING: // 32 //
return 'E_CORE_WARNING';
case
E_COMPILE_ERROR: // 64 //
return 'E_COMPILE_ERROR';
case
E_COMPILE_WARNING: // 128 //
return 'E_COMPILE_WARNING';
case
E_USER_ERROR: // 256 //
return 'E_USER_ERROR';
case
E_USER_WARNING: // 512 //
return 'E_USER_WARNING';
case
E_USER_NOTICE: // 1024 //
return 'E_USER_NOTICE';
case
E_STRICT: // 2048 //
return 'E_STRICT';
case
E_RECOVERABLE_ERROR: // 4096 //
return 'E_RECOVERABLE_ERROR';
case
E_DEPRECATED: // 8192 //
return 'E_DEPRECATED';
case
E_USER_DEPRECATED: // 16384 //
return 'E_USER_DEPRECATED';
}
return
"";
}
?>
up
15
fadhilinjagi at gmail dot com
3 years ago
A simple and neat way to get the error level from the error code. You can even customize the error level names further.

<?php
$exceptions
= [
E_ERROR => "E_ERROR",
E_WARNING => "E_WARNING",
E_PARSE => "E_PARSE",
E_NOTICE => "E_NOTICE",
E_CORE_ERROR => "E_CORE_ERROR",
E_CORE_WARNING => "E_CORE_WARNING",
E_COMPILE_ERROR => "E_COMPILE_ERROR",
E_COMPILE_WARNING => "E_COMPILE_WARNING",
E_USER_ERROR => "E_USER_ERROR",
E_USER_WARNING => "E_USER_WARNING",
E_USER_NOTICE => "E_USER_NOTICE",
E_STRICT => "E_STRICT",
E_RECOVERABLE_ERROR => "E_RECOVERABLE_ERROR",
E_DEPRECATED => "E_DEPRECATED",
E_USER_DEPRECATED => "E_USER_DEPRECATED",
E_ALL => "E_ALL"
];

echo
$exceptions["1"];
$code = 256;
echo
$exceptions[$code];
?>

Output:
E_ERROR
E_USER_ERROR

This will need updating when PHP updates the error level names. Otherwise, it works just fine.
up
15
bbrokman at gmail dot com
5 years ago
A neat way to have a place in code to control error reporting configuration :)

<?php

$errorsActive
= [
E_ERROR => FALSE,
E_WARNING => TRUE,
E_PARSE => TRUE,
E_NOTICE => TRUE,
E_CORE_ERROR => FALSE,
E_CORE_WARNING => FALSE,
E_COMPILE_ERROR => FALSE,
E_COMPILE_WARNING => FALSE,
E_USER_ERROR => TRUE,
E_USER_WARNING => TRUE,
E_USER_NOTICE => TRUE,
E_STRICT => FALSE,
E_RECOVERABLE_ERROR => TRUE,
E_DEPRECATED => FALSE,
E_USER_DEPRECATED => TRUE,
E_ALL => FALSE,
];

error_reporting(
array_sum(
array_keys($errorsActive, $search = true)
)
);

?>
up
12
cl at viazenetti dot de
7 years ago
An other way to get all PHP errors that are set to be reported. This code will even work, when additional error types are added in future.

<?php
$pot
= 0;
foreach (
array_reverse(str_split(decbin(error_reporting()))) as $bit) {
if (
$bit == 1) {
echo
array_search(pow(2, $pot), get_defined_constants(true)['Core']). "<br>\n";
}
$pot++;
}
?>
up
6
kezzyhko at NOSPAM dot semysha dot ru
8 years ago
As for me, the best way to get error name by int value is that. And it's works fine for me ;)
<?php

array_flip
(array_slice(get_defined_constants(true)['Core'], 1, 15, true))[$type];

//the same in readable form
array_flip(
array_slice(
get_defined_constants(true)['Core'],
1,
15,
true
)
)[
$type]

?>
up
3
kaioker
3 years ago
super simple error code to human readable conversion:

function prettycode($code){
return $code == 0 ? "FATAL" : array_search($code, get_defined_constants(true)['Core']);
}
up
1
ErikBachmann
5 years ago
<?php
function getErrorTypeByValue($type) {
$constants = get_defined_constants(true);

foreach (
$constants['Core'] as $key => $value ) { // Each Core constant
if ( preg_match('/^E_/', $key ) ) { // Check error constants
if ( $type == $value )
return(
"$key=$value");
}
}
}
// getErrorTypeByValue()

echo "[".getErrorTypeByValue( 1 ) . "]". PHP_EOL;
echo
"[".getErrorTypeByValue( 0 ) . "]". PHP_EOL;
echo
"[".getErrorTypeByValue( 8 ) . "]". PHP_EOL;
?>

Will give
[E_ERROR=1]
[]
[E_NOTICE=8]
To Top