Сохранение и восстановление уровня error_reporting в PHP

У меня есть одна странная проблема с функцией error_reporting.

Я хочу сохранить текущий уровень error_reporting, отключить отчет об ошибках для нескольких строк и восстановить его обратно. Итак, у меня есть следующий код:

$oldErrorReporting = error_reporting();
error_reporting(0);
//Some code, that will generate warning, or error, that I don't want to show
error_reporting(oldErrorReporting);

Итак, если я удаляю последнюю строку, ошибок нет, и все работает нормально. Но если я добавлю последнюю строку, я получу ошибку, которая возникает в коде, когда отчет об ошибках отключен. Итак, было ли что-нибудь, чтобы очистить те ошибки, которые происходят, когда уровень error_reporting был равен 0, и восстановить уровень отчетов об ошибках по умолчанию, без тех ошибок, которые происходят, когда отчет об ошибках был отключен?


person Ivica    schedule 16.04.2012    source источник
comment
Это буквально ваш код? Тогда вам не хватает $. В противном случае, знаете ли вы об операторе подавления ошибок @? Кроме того, какой код у вас есть, который вызывает ошибки?   -  person deceze♦    schedule 16.04.2012


Ответы (2)


возможно, это просто опечатка (если это так, пожалуйста, не переписывайте код вопроса, просто скопируйте и вставьте (и удалите ненужные строки)), но вы забыли знак $ в последней строке:

error_reporting($oldErrorReporting);
person oezi    schedule 16.04.2012
comment
К сожалению, это был просто тип, когда я вставил код в свой вопрос. - person Ivica; 16.04.2012

Какой код генерирует предупреждения? Если это функция попробуйте вместо понижения уровня отладки подавить само предупреждение - напишите "@" перед именем функции

посмотри на:

Подавить ошибку с помощью оператора @ в PHP

person xholicka    schedule 16.04.2012
comment
Проблема связана с функцией imap_open, и она генерирует ошибку, если соединение с сервером imap по какой-либо причине не удается, и я хочу избежать этого и просто сообщить пользователю, можно ли подключиться к серверу IMAP или нет, без подробностей об ошибке. Я попытался использовать @, чтобы предотвратить ошибки, но это не работает должным образом. - person Ivica; 16.04.2012
comment
не могли бы вы опубликовать здесь важные части кода? есть несколько способов обработки ошибок... условий, исключений и т.д. - person xholicka; 16.04.2012