У меня есть код PHP. Когда я запустил его, появится предупреждающее сообщение.Удалить предупреждающие сообщения в PHP
Как я могу удалить/пресекать/игнорировать эти предупреждающие сообщения?
У меня есть код PHP. Когда я запустил его, появится предупреждающее сообщение.Удалить предупреждающие сообщения в PHP
Как я могу удалить/пресекать/игнорировать эти предупреждающие сообщения?
Вы действительно должны исправить все, что вызывает предупреждение, но вы можете контролировать видимость ошибок с помощью error_reporting. Для того, чтобы пропустить предупреждающие сообщения, вы могли бы использовать что-то вроде:
error_reporting(E_ERROR | E_PARSE);
Вы можете подавить предупреждение, используя error_reporting, но гораздо лучший способ - исправить ваш сценарий в первую очередь.
Если вы не знаете, как отредактировать свой вопрос и показать нам соответствующую строку и предупреждение, которое отображается.
Вы можете поставить @ перед вашим вызовом функции, чтобы подавить все сообщения об ошибках.
@yourFunctionHere();
Это просто скрывает ошибку, это все еще происходит. Ошибки заставляют PHP замедляться, поэтому лучше всего исправить ошибку, если это вообще возможно. Использование @ даже замедляет код при отсутствии ошибки. http://vega.rd.no/articles/php-performance-error-suppression – dprevite
Иногда (к сожалению) у вас действительно нет выбора. Например, PHP-функция parse_url() генерирует предупреждения для «сильно искаженных» URL-адресов, что, возможно, является ошибкой, так как функция возвращает false в этом случае. Поэтому вы должны либо переносить эти предупреждения PHP в своем программном выпуске (может быть неприемлемо для приложений парсера/валидатора), так или иначе подавлять предупреждения, или работать с нарушенным поведением PHP, написав собственный анализатор/валидатор для URL-адресов. В этом случае я выбираю @. – Peter
ВАЖНО: используйте этот метод iff (1), вы не можете исправить проблему, которая генерирует предупреждение, и (2) скрывать ваши предупреждения от конечных пользователей через php error_reporting ... Скрытие предупреждений ваших разработчиков НЕ является решением. –
Чтобы подавить предупреждения, оставляя все остальные сообщения об ошибках включена:
error_reporting(E_ALL^E_WARNING);
Не точно ответить на вопрос, но я думаю, что это лучший компромисс в некоторых ситуациях:
Я был предупреждающее сообщение в результате вывода printf() в сторонней библиотеке. Я точно знал, в чем причина: временная работа, в то время как сторонняя сторона исправила свой код. Я согласен с тем, что предупреждения не следует подавлять, но я не мог продемонстрировать свою работу клиенту с появлением предупреждающего сообщения на экране. Мое решение:
printf('<div style="display:none">');
...Third-party stuff here...
printf('</div>');
Предупреждение по-прежнему в источнике страницы как напоминание для меня, но невидимое для клиента.
Лично я использовал бы ['ob_start()'] (http://php.net/manual/en/function.ob-start.php) и ['ob_end_clean()'] (http: // php. net/manual/en/function.ob-end-clean.php). Таким образом, материал даже не отправляется в браузер (который он здесь делает). – h2ooooooo
Вот почему я включил «некоторые ситуации», «предупреждения не следует подавлять» и «напоминать мне». – DaveWalley
Перед тем, как спустить меня, пожалуйста, прочитайте мой ответ. Обратите внимание на «сторонний», «компромисс» и комментарий выше. Я добавил этот ответ, если кто-то еще находится в той же ситуации, в которой я был, и в этой конкретной ситуации это спасло меня, тогда как все остальные ответы были бы не такими хорошими. В следующий раз я буду думать дважды о том, чтобы быть полезным. – DaveWalley
Если вы не хотите показывать предупреждения, а также ошибки используют
// Turn off all error reporting
error_reporting(0);
Я думаю, что лучшим решением является конфигурация .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
в ядре Php, чтобы скрыть предупреждение набор сообщений error_reporting (0) в верхней части общего включают файл или отдельный файл.
В Wordpress hide Warnings and Notices оных следующий код в 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);
Если вы хотите, чтобы подавить предупреждения и некоторые другие типы ошибок (например, уведомления), при отображении всех других ошибок, вы можете do:
error_reporting(E_ALL & ~E_WARNING & ~E_NOTICE);
Я делаю это как на моем php.ини:
error_reporting = E_ALL & ~ E_WARNING & ~ E_NOTICE & ~ E_STRICT & ~ E_DEPRECATED
Какие журналы только неисправимые ошибки, и никаких предупреждений
'E_ALL^E_WARNING', включающий все сообщения об ошибках, кроме предупреждений, кажется лучшим выбором аргумента' error_reporting'. –
Как правило, я согласен, что в моем случае генерирование предупреждающего сообщения было предполагаемым поведением, поскольку оно было частью моих модульных тестов. – pgee70