Ответы:
Вы действительно должны исправить все, что вызывает предупреждение, но вы можете контролировать видимость ошибок с помощью error_reporting()
. Чтобы пропустить предупреждающие сообщения, вы можете использовать что-то вроде:
error_reporting(E_ERROR | E_PARSE);
E_ALL ^ E_WARNING
Включение всех отчетов об ошибках, кроме предупреждений, кажется лучшим выбором аргумента для error_reporting
.
Вы можете поставить @ перед вызовом функции, чтобы подавить все сообщения об ошибках.
@yourFunctionHere();
dns_get_record
будут выдавать предупреждения. Ваш код может компенсировать предупреждение, но он все равно выбрасывает их. Отключение отчетов об ошибках работает на рабочем сервере, но не на сервере devel. Если вы генерируете XML-контент, предупреждение приведет к тому, что браузер не будет отображаться, поскольку сервер отправляет некорректный XML-код, вызванный предупреждением. Иногда вам нужно это на devel, но не для чего-то, вызванного временной ошибкой поиска DNS, которую вы уже компенсируете.
Если вы не хотите показывать предупреждения, а также ошибки, используйте
// Turn off all error reporting
error_reporting(0);
в Core Php, чтобы скрыть предупреждающее сообщение, установите error_reporting (0) в верхней части общего включаемого файла или отдельного файла.
В Wordpress скрыть Предупреждения и Уведомления добавить следующий код в файле wp-config.php
ini_set('log_errors','On');
ini_set('display_errors','Off');
ini_set('error_reporting', E_ALL );
define('WP_DEBUG', false);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
Не совсем отвечаю на вопрос, но я думаю, что это лучший компромисс в некоторых ситуациях:
У меня появилось предупреждающее сообщение в результате оператора printf () в сторонней библиотеке. Я точно знал, в чем причина - временное решение проблемы, пока сторонние исправили свой код. Я согласен с тем, что предупреждения не должны подавляться, но я не смог продемонстрировать свою работу клиенту с предупреждением, появляющимся на экране. Мое решение:
printf('<div style="display:none">');
...Third-party stuff here...
printf('</div>');
Предупреждение все еще было в источнике страницы как напоминание для меня, но невидимым для клиента.
ob_start()
и ob_end_clean()
вместо этого. Таким образом, материал даже не отправляется в браузер (что он делает здесь).
Я думаю, что лучшим решением является конфигурация .htaccess. Таким образом, вам не нужно изменять код приложения. Вот директивы для Apache2
php_flag display_startup_errors off
php_flag display_errors off
php_flag html_errors off
php_value docref_root 0
php_value docref_ext 0
Вы можете подавить предупреждение, используя error_reporting, но гораздо лучший способ - это сначала исправить ваш скрипт.
Если вы не знаете, как, отредактируйте свой вопрос и покажите нам соответствующую строку и отображаемое предупреждение.
Уже есть ответ с оператором контроля ошибок, но в нем нет объяснения. Вы можете использовать @
оператор с каждым выражением, и оно скрывает ошибки (за исключением фатальных ошибок).
@$test['test']; //PHP Notice: Undefined variable: test
@(14/0); // PHP Warning: Division by zero
//This is not working. You can't hide Fatal Errors this way.
@customFuntion(); // PHP Fatal error: Uncaught Error: Call to undefined function customFuntion()
Для отладки это быстрый и идеальный метод. Но вы никогда не должны использовать его на производстве или постоянно включать в свою локальную версию. Это даст вам много ненужного раздражения.
Вы должны рассмотреть вместо этого:
1. Настройки сообщений об ошибках, указанные в принятом ответе.
error_reporting(E_ERROR | E_PARSE);
или из настроек PHP INI
ini_set('display_errors','Off');
2. Ловля исключений
try {
$var->method();
} catch (Error $e) {
// Handle error
echo $e->getMessage();
}