PHP 8.4.1 Released!

Vordefinierte Konstanten

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

Hinweis: Sie können diese Konstanten innerhalb von php.ini benutzen, aber nicht außerhalb von PHP, wie etwa in der httpd.conf, wo Sie stattdessen die Werte der Bitmasken benutzen sollten.

Fehler und Meldungen
Wert Konstante Beschreibung Bemerkung
1 E_ERROR (int) Fatale Laufzeit-Fehler. Dies zeigt Fehler an, die nicht behoben werden können. Beispielsweise Probleme bei der Speicherzuweisung. Die Ausführung des Skripts wird abgebrochen.  
2 E_WARNING (int) Warnungen (keine fatalen Fehler) zur Laufzeit des Skripts. Das Skript wird nicht abgebrochen.  
4 E_PARSE (int) Parser-Fehler während der Übersetzung. Parser-Fehler können nur vom Parser erzeugt werden.  
8 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.  
16 E_CORE_ERROR (int) Fatale Fehler, die beim Starten von PHP auftreten. Diese sind ähnlich wie E_ERROR, nur dass diese Fehlermeldungen vom PHP-Kern erzeugt werden.  
32 E_CORE_WARNING (int) Warnungen (keine fatalen Fehler), die beim Starten von PHP auftreten. Diese sind ähnlich wie E_WARNING, nur dass diese Warnungen vom PHP-Kern erzeugt werden.  
64 E_COMPILE_ERROR (int) Fatale Fehler zur Übersetzungszeit. Diese sind ähnlich wie E_ERROR, nur dass diese Fehlermeldungen von der Zend Scripting Engine erzeugt werden.  
128 E_COMPILE_WARNING (int) Warnungen zur Übersetzungszeit. Diese sind ähnlich wie E_WARNING, nur dass diese Warnungen von der Zend Scripting Engine erzeugt werden.  
256 E_USER_ERROR (int) Benutzerdefinierte Fehlermeldungen. Diese sind ähnlich wie E_ERROR, nur dass diese Fehlermeldungen im PHP-Code mit trigger_error() erzeugt werden.  
512 E_USER_WARNING (int) Benutzerdefinierte Warnungen. Diese sind ähnlich wie E_WARNING, nur dass diese Warnungen im PHP-Code mit trigger_error() erzeugt werden.  
1024 E_USER_NOTICE (int) Benutzerdefinierte Benachrichtigungen. Diese sind ähnlich wie E_NOTICE, nur dass diese Benachrichtigungen im PHP-Code mit trigger_error() erzeugt werden.  
2048 E_STRICT (int) Aktivieren Sie diese Einstellung, um von PHP Vorschläge für Änderungen des Programmcodes zu erhalten, die eine bestmögliche Interoperabilität und zukünftige Kompatibilität Ihres Codes gewährleisten.  
4096 E_RECOVERABLE_ERROR (int) Abfangbarer fataler Fehler. Dies bedeutet das ein potentiell gefährlicher Fehler aufgetreten ist, die Engine aber nicht in einem instabilen Zustand hinterlassen hat. Wird der Fehler nicht durch eine benutzerdefinierte Fehlerbehandlungsroutine abgefangen (siehe auch set_error_handler()), so wird die Anwendung wie bei einem Fehler der Stufe E_ERROR abgebrochen.  
8192 E_DEPRECATED (int) Benachrichtigungen zur Laufzeit des Programms. Aktivieren Sie diese Einstellung, um Warnungen über Codebestandteile zu erhalten, die in zukünftigen PHP-Versionen nicht mehr funktionieren werden.  
16384 E_USER_DEPRECATED (int) Benutzererzeugte Warnmeldung. Diese entspricht E_DEPRECATED, mit der Ausnahme, dass sie im PHP-Code durch die Verwendung der Funktion trigger_error() generiert wurde.  
32767 E_ALL (int) Alle Fehler, Warnungen und Benachrichtigungen.  

Mit den obengennnten Werten (sowohl numerisch als auch mit den Konstanten) wird eine Bitmaske erzeugt, die festlegt, welche Fehler angezeigt werden sollen. Mit den Bit-Operatoren können Sie diese Werte kombinieren oder bestimmte Fehlertypen ausblenden. Beachten Sie, dass innerhalb von php.ini jedoch nur '|', '~', '!', '^' und '&' verstanden werden.

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
6 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