Удалить предупреждений в PHP

У меня есть код PHP. Когда я запускаю его, появляется предупреждающее сообщение.

Как я могу удалить/подавить/игнорировать эти предупреждения?

10 ответов


вы действительно должны исправить то, что вызывает предупреждение, но вы можете контролировать видимость ошибок с предназначенных. Чтобы пропустить предупреждающие сообщения, Вы можете использовать что-то вроде:

error_reporting(E_ERROR | E_PARSE);

вы можете поставить @ перед вызовом функции, чтобы подавить все сообщения об ошибках.

@yourFunctionHere();

чтобы подавить предупреждения, оставив все остальные сообщения об ошибках включенными:

error_reporting(E_ALL ^ E_WARNING); 

Если вы не хотите показывать предупреждения, а также ошибок, использовать

// Turn off all error reporting
error_reporting(0);

отчеты об ошибках - руководство по PHP


Не совсем ответ на вопрос, но я думаю, что это лучший компромисс в некоторых ситуациях:

У меня было предупреждающее сообщение в результате оператора printf() в сторонней библиотеке. Я точно знал, в чем причина - временная работа, пока третья сторона исправляла свой код. Я согласен с тем, что предупреждения не должны подавляться, но я не мог продемонстрировать свою работу клиенту с предупреждающим сообщением, появляющимся на экране. Мой решение:

printf('<div style="display:none">');
    ...Third-party stuff here...
printf('</div>');

предупреждение все еще было в источнике страницы в качестве напоминания мне, но невидимо для клиента.


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

Если вы не знаете, как, отредактируйте свой вопрос и покажите нам строку в вопросе и предупреждение, которое отображается.


в Core Php для скрытия предупреждающего сообщения установите error_reporting (0) поверх общего файла include или отдельного файла.

В 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);

Я думаю, что лучшим решением является конфигурация .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(E_ALL & ~E_WARNING & ~E_NOTICE);

Я делаю это следующим образом в моем php.ini:

error_reporting = E_ALL & ~E_WARNING  & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED

это регистрирует только фатальные ошибки и никаких предупреждений.