The constants below are always available as part of the PHP core.
The following constants (either the corresponding numerical value or their symbolic name) are used as a bitmask to specify which errors to report. It is possible to usebitwise operators to combine these values or mask out certain types of errors.
The name of the constants can be used withinphp.ini, instead of the raw numerical values to which they correspond to. However, only the|,~,^,!,& operators are understood withinphp.ini.
It is not possible to use the symbolic names outside of PHP. For example inhttpd.conf the computed bitmask value must be used instead.
E_ERROR (int)1E_WARNING (int)2E_PARSE (int)4E_NOTICE (int)8E_CORE_ERROR (int)E_ERROR, except it is generated by the core of PHP. Value of the constant:16E_CORE_WARNING (int)E_WARNING, except it is generated by the core of PHP. Value of the constant:32E_COMPILE_ERROR (int)E_ERROR, except it is generated by the Zend Scripting Engine. Value of the constant:64E_COMPILE_WARNING (int)E_WARNING, except it is generated by the Zend Scripting Engine. Value of the constant:128E_DEPRECATED (int)8192E_USER_ERROR (int)E_ERROR, except it is generated in PHP code by using the PHP functiontrigger_error(). Value of the constant:256 Usage of this constant withtrigger_error() is deprecated as of PHP 8.4.0. It is recommended to eitherthrow anException or callexit() instead.
E_USER_WARNING (int)E_WARNING, except it is generated in PHP code by using the PHP functiontrigger_error(). Value of the constant:512E_USER_NOTICE (int)E_NOTICE, except it is generated in PHP code by using the PHP functiontrigger_error(). Value of the constant:1024E_USER_DEPRECATED (int)E_DEPRECATED, except it is generated in PHP code by using the PHP functiontrigger_error(). Value of the constant:16384E_STRICT (int)2048This error level is unused, and has been deprecated as of PHP 8.4.0.
E_RECOVERABLE_ERROR (int)E_ERROR. Value of the constant:4096Note: This error level is effectively unused, the only case where this can happen is when interpreting anobject as abool fails. This can only happen for internal objects. The most common example, prior to PHP 8.4.0, is using aGMP instance in a conditional.
E_ALL (int)30719 Prior to PHP 8.4, the constant value was:32767
-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 :-)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) { echoarray_search(pow(2,$pot),get_defined_constants(true)['Core'])."<br>\n"; }$pot++;}?>[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++ ) { printFriendlyErrorType($errLvl&pow(2,$i)) ."<br>\\n"; }functionFriendlyErrorType($type){ switch($type) { caseE_ERROR:// 1 //return'E_ERROR'; caseE_WARNING:// 2 //return'E_WARNING'; caseE_PARSE:// 4 //return'E_PARSE'; caseE_NOTICE:// 8 //return'E_NOTICE'; caseE_CORE_ERROR:// 16 //return'E_CORE_ERROR'; caseE_CORE_WARNING:// 32 //return'E_CORE_WARNING'; caseE_COMPILE_ERROR:// 64 //return'E_COMPILE_ERROR'; caseE_COMPILE_WARNING:// 128 //return'E_COMPILE_WARNING'; caseE_USER_ERROR:// 256 //return'E_USER_ERROR'; caseE_USER_WARNING:// 512 //return'E_USER_WARNING'; caseE_USER_NOTICE:// 1024 //return'E_USER_NOTICE'; caseE_STRICT:// 2048 //return'E_STRICT'; caseE_RECOVERABLE_ERROR:// 4096 //return'E_RECOVERABLE_ERROR'; caseE_DEPRECATED:// 8192 //return'E_DEPRECATED'; caseE_USER_DEPRECATED:// 16384 //return'E_USER_DEPRECATED'; } return"";}?>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_ERRORE_USER_ERRORThis will need updating when PHP updates the error level names. Otherwise, it works just fine.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) ));?>As for me, the best way to get error name by int value is that. And it's works fine for me ;)<?phparray_flip(array_slice(get_defined_constants(true)['Core'],1,15,true))[$type];//the same in readable formarray_flip(array_slice(get_defined_constants(true)['Core'],1,15,true))[$type]?>super simple error code to human readable conversion:function prettycode($code){ return $code == 0 ? "FATAL" : array_search($code, get_defined_constants(true)['Core']);}<?phpfunctiongetErrorTypeByValue($type) {$constants=get_defined_constants(true); foreach ($constants['Core'] as$key=>$value) {// Each Core constantif (preg_match('/^E_/',$key) ) {// Check error constantsif ($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]