обработка ошибок — php error_reporting — отключение, затем включение с 0 и 1 соответственно не работает

Фрагмент PHP:

 <?php
error_reporting(0);
$a;

echo ' a = '.$a.'<br>';error_reporting(1);

echo ' b= '.$b;

?>

и выходной

a =
b=

без какого-либо уведомления.

Я ожидал error_reporting(1) работать, чтобы показать ошибки. Но если я использую error_reporting(E_ALL) вместо этого он показывает уведомление для неопределенной переменной b;

Вопросы:

1) Если параметр равен 0 или false тогда ошибки подавляются, тогда почему не 1 или true будет работать наоборот?

2) Где это упоминается в документации PHP сайт что 0 или false может быть передан в качестве параметра, тогда как я могу найти Вот тот E_ALL можно использовать как параметр?

0

Решение

error_reporting(1) равноценно error_reporting(E_ERROR) это означает, что вы будете активировать только отчеты об ошибках из PHP
В вашем случае вы должны написать error_reporting(E_NOTICE) увидеть сообщение от PHP
Вы можете комбинировать со многими типами отчетов error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE)
Для повторной активации всех типов ошибок и предупреждений вы можете написать error_reporting(-1)
Надеюсь, поможет

0

Другие решения

error_reporting() надеется параметр битового поля $level который представляет различные параметры сообщения об ошибке. Чтобы включить уведомления о неопределенных переменных, вы хотите комбинацию E_ALL а также E_STRICT:

error_reporting(E_ALL | E_STRICT);

(Из PHP 5.4 вы можете опустить E_STRICT так как он включен в E_ALL). Используя целое число 0 просто означает, что вы отключили все параметры.

В зависимости от настроек ini вы также можете включить отображение ошибок — для отладки отключите его на производстве:

ini_set('display_errors', 1);

Пример:

ini_set('display_errors', 1);

error_reporting(0);
echo $a;

error_reporting(E_ALL | E_STRICT);
echo $b;

Приведенный выше пример будет отображать уведомление при попытке доступа к $ b, который не определен.

0

По вопросам рекламы [email protected]