Удаление предупреждающих сообщений в PHP
У меня есть немного PHP-кода. Когда я запускаю его, появляется предупреждающее сообщение.
Как я могу удалить/подавить/игнорировать эти предупреждающие сообщения?
10 answers
Вам действительно следует исправить то, что вызывает предупреждение, но вы можете контролировать видимость ошибок с помощью error_reporting. Чтобы пропустить предупреждающие сообщения, вы можете использовать что-то вроде:
error_reporting(E_ERROR | E_PARSE);
Вы можете положить @ перед вызовом функции, чтобы подавить все сообщения об ошибках.
@yourFunctionHere();
Чтобы подавить предупреждения, оставив все остальные сообщения об ошибках включенными:
error_reporting(E_ALL ^ E_WARNING);
Если вы не хотите показывать предупреждения, а также ошибки, используйте
// Turn off all error reporting
error_reporting(0);
Не совсем отвечаю на вопрос, но я думаю, что в некоторых ситуациях это лучший компромисс:
У меня появилось предупреждающее сообщение в результате оператора printf() в сторонней библиотеке. Я точно знал, в чем причина - временное решение, пока сторонняя компания исправляла свой код. Я согласен с тем, что предупреждения не следует подавлять, но я не мог продемонстрировать свою работу клиенту с предупреждающим сообщением, появляющимся на экране. Мое решение:
printf('<div style="display:none">');
...Third-party stuff here...
printf('</div>');
Предупреждение все еще было в источнике страницы в качестве напоминания мне, но невидимого для клиента.
Вы можете отключить предупреждение, используя сообщение об ошибке но гораздо лучший способ - это в первую очередь исправить свой сценарий.
Если вы не знаете, как это сделать, отредактируйте свой вопрос и покажите нам соответствующую строку и отображаемое предупреждение.
В основном 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);
Я думаю, что лучшим решением является настройка .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
При этом регистрируются только фатальные ошибки и никаких предупреждений.