Фрагмент 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
можно использовать как параметр?
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)
Надеюсь, поможет
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, который не определен.