PHP выбрасывает уведомления «неопределенная переменная» - PullRequest
0 голосов
/ 18 декабря 2010

Я хочу регистрировать все ошибки, кроме неопределенных записей переменных ... разве это не должно это делать?

    error_reporting(E_ERROR | E_WARNING | E_PARSE);

Ответы [ 2 ]

9 голосов
/ 18 декабря 2010

Это скрывает все уведомления, но это должно сделать это:

<code>error_reporting(E_ALL ^ E_NOTICE);


Вместо этого вы должны решить проблемы.

1 голос
/ 18 декабря 2010

Эти уведомления регистрируются через ваш пользовательский обработчик ошибок. Это то, что вы должны адаптировать. Ищите set_error_handler() и функцию, которую он определяет. Он имеет объявление вроде:

function user_err_log ($errno, $errstr, $file, $line, $context) {

И вы хотите проверить $errno, чтобы отделить уведомления от ошибок:

    if ($errno == E_NOTICE or $errno == E_USER_NOTICE) {
         // log to a debug file instead
         return;
    }

Преимущество error_reporting(0x0000) и оператора подавления ошибок @ по сравнению с синтаксическим подавлением с помощью isset заключается в том, что важные уведомления все еще достигают вашего пользовательского обработчика ошибок. Но вы должны вручную разобраться с ними, если вам все равно. Что для ведения журнала ошибок , вы по праву не должны. (Я бы лично разработал метод для размещения уведомлений в другом месте, на всякий случай.)

...