-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 :-)
Предопределенные константы
Перечисленные ниже константы всегда доступны как часть ядра PHP.
Замечание: Данные имена констант можно использовать в файле php.ini но не вне PHP, как например в файле httpd.conf, где вместо них необходимо использовать значения их битовых масок.
| Значение | Константа | Описание | Примечание |
|---|---|---|---|
| 1 |
E_ERROR
(integer)
|
Фатальные ошибки времени выполнения. Это неустранимые средствами самого скрипта ошибки, такие как ошибка распределения памяти и т.п. Выполнение скрипта в таком случае прекращается. | |
| 2 |
E_WARNING
(integer)
|
Предупреждения времени выполнения (нефатальные ошибки). Выполнение скрипта в таком случае не прекращается. | |
| 4 |
E_PARSE
(integer)
|
Ошибки на этапе компиляции. Должны генерироваться только парсером. | |
| 8 |
E_NOTICE
(integer)
|
Уведомления времени выполнения. Указывают на то, что во время выполнения скрипта произошло что-то, что может указывать на ошибку, хотя это может происходить и при обычном выполнении программы. | |
| 16 |
E_CORE_ERROR
(integer)
|
Фатальные ошибки, которые происходят во время запуска РНР. Такие ошибки схожи с
E_ERROR, за исключением того, что они генерируются ядром PHP.
|
|
| 32 |
E_CORE_WARNING
(integer)
|
Предупреждения (нефатальные ошибки), которые происходят во время начального запуска РНР.
Такие предупреждения схожи с E_WARNING, за исключением того,
что они генерируются ядром PHP.
|
|
| 64 |
E_COMPILE_ERROR
(integer)
|
Фатальные ошибки на этапе компиляции. Такие ошибки
схожи с E_ERROR, за исключением того,
что они генерируются скриптовым движком Zend.
|
|
| 128 |
E_COMPILE_WARNING
(integer)
|
Предупреждения на этапе компиляции (нефатальные ошибки). Такие
предупреждения схожи с E_WARNING, за
исключением того, что они генерируются скриптовым движком Zend.
|
|
| 256 |
E_USER_ERROR
(integer)
|
Сообщения об ошибках сгенерированные пользователем. Такие
ошибки схожи с E_ERROR, за исключением
того, что они генерируются в коде скрипта средствами функции
PHP trigger_error().
|
|
| 512 |
E_USER_WARNING
(integer)
|
Предупреждения сгенерированные пользователем. Такие
предупреждения схожи с E_WARNING,
за исключением того, что они генерируются в коде скрипта
средствами функции PHP trigger_error().
|
|
| 1024 |
E_USER_NOTICE
(integer)
|
Уведомления сгенерированные пользователем. Такие уведомления
схожи с E_NOTICE, за исключением того,
что они генерируются в коде скрипта, средствами
функции PHP trigger_error().
|
|
| 2048 |
E_STRICT
(integer)
|
Включаются для того, чтобы PHP предлагал изменения в коде, которые обеспечат лучшее взаимодействие и совместимость кода. | Начиная с PHP 5, но не включены в E_ALL вплоть до PHP 5.4.0 |
| 4096 |
E_RECOVERABLE_ERROR
(integer)
|
Фатальные ошибки с возможностью обработки. Такие ошибки указывают, что,
вероятно, возникла опасная ситуация, но при этом, скриптовый движок остается в стабильном состоянии.
Если такая ошибка не обрабатывается функцией, определенной пользователем для обработки ошибок
(см. set_error_handler()), выполнение приложения прерывается, как происходит
при ошибках E_ERROR.
|
Начиная с PHP 5.2.0 |
| 8192 |
E_DEPRECATED
(integer)
|
Уведомления времени выполнения об использовании устаревших конструкций. Включаются для того, чтобы получать предупреждения о коде, который не будет работать в следующих версиях PHP. | Начиная с PHP 5.3.0 |
| 16384 |
E_USER_DEPRECATED
(integer)
|
Уведомления времени выполнения об использовании устаревших
конструкций, сгенерированные пользователем. Такие уведомления
схожи с E_DEPRECATED за исключением того,
что они генерируются в коде скрипта, с помощью функции PHP
trigger_error().
|
Начиная с PHP 5.3.0 |
| 32767 |
E_ALL
(integer)
|
Все поддерживаемые ошибки и предупреждения, за исключением
ошибок E_STRICT до PHP 5.4.0.
|
32767 в PHP 5.4.x, 30719 в PHP 5.3.x, 6143 в PHP 5.2.x, 2047 ранее |
Представленные выше значения (как числовые, так и символьные) используются для задания битовой маски, определяющей об ошибках какого типа будет даваться отчет. Вы можете использовать побитовые операторы, чтобы совмещать эти значения для указания определенных типов ошибок. Стоит отметить, что в php.ini допустимы только следующие операторы: '|', '~', '!', '^' и '&'.
Andy at Azurite (co uk) ¶
2 years ago
frozenfire at php dot net ¶
1 year ago
Please note that a bug exists in Xdebug versions up to at least 2.1.2 where E_USER_DEPRECATED is not supported even in PHP 5.3.0+.
PhpMyCoder ¶
2 years ago
Well, technically -1 will show all errors which includes any new ones included by PHP. My guess is that E_ALL will always include new error constants so I usually prefer:
<?php
error_reporting(E_ALL | E_STRICT);
?>
Reason being: With a quick glance anyone can tell you what errors are reported. -1 might be a bit more cryptic to newer programmers.
wolfrageweb.com ¶
3 years ago
-1 sets the error reporting to show all to include strict. Should only be used for development servers.
russthom at fivegulf dot com ¶
10 months ago
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_CORE_ERROR: // 64 //
return 'E_COMPILE_ERROR';
case E_CORE_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 "";
}
?>
vladvarna at gmail dot com ¶
1 year ago
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_CORE_ERROR: // 64 //
return 'E_COMPILE_ERROR';
case E_CORE_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 $type;
}
Anonymous ¶
8 months ago
this would give you all the reported exception list of your configuration.
<?php
function FriendlyErrorType($type)
{
$return ="";
if($type & E_ERROR) // 1 //
$return.='& E_ERROR ';
if($type & E_WARNING) // 2 //
$return.='& E_WARNING ';
if($type & E_PARSE) // 4 //
$return.='& E_PARSE ';
if($type & E_NOTICE) // 8 //
$return.='& E_NOTICE ';
if($type & E_CORE_ERROR) // 16 //
$return.='& E_CORE_ERROR ';
if($type & E_CORE_WARNING) // 32 //
$return.='& E_CORE_WARNING ';
if($type & E_COMPILE_ERROR) // 64 //
$return.='& E_COMPILE_ERROR ';
if($type & E_COMPILE_WARNING) // 128 //
$return.='& E_COMPILE_WARNING ';
if($type & E_USER_ERROR) // 256 //
$return.='& E_USER_ERROR ';
if($type & E_USER_WARNING) // 512 //
$return.='& E_USER_WARNING ';
if($type & E_USER_NOTICE) // 1024 //
$return.='& E_USER_NOTICE ';
if($type & E_STRICT) // 2048 //
$return.='& E_STRICT ';
if($type & E_RECOVERABLE_ERROR) // 4096 //
$return.='& E_RECOVERABLE_ERROR ';
if($type & E_DEPRECATED) // 8192 //
$return.='& E_DEPRECATED ';
if($type & E_USER_DEPRECATED) // 16384 //
$return.='& E_USER_DEPRECATED ';
return substr($return,2);
}
echo "error_reporting = " . FriendlyErrorType(ini_get('error_reporting')) .";<br>";
?>
