Как отключить PHP-уведомления?

Notice: Constant DIR_FS_CATALOG already defined

Я уже прокомментировал display_errors в php.ini, но не работает.

Как заставить PHP не выводить такие вещи в браузеры?

UPDATE

Я поместил display_errors = Off туда, но он все еще сообщает о таких уведомлениях,

Это проблема с PHP 5.3?

Сообщает о многочисленном стек вызовов тоже.

Ответ 1

Вы можете установить display_errors в 0 или использовать error_reporting().

Однако уведомления раздражают (я могу частично сочувствовать), но они служат цели. Вы не должны определять константу дважды, второй раз не будет работать, и константа останется неизменной!

Ответ 2

Из документации PHP (error_reporting):

<?php
// Turn off all error reporting
error_reporting(0);
?>

Другие интересные опции для этой функции:

<?php

// Report simple running errors
error_reporting(E_ERROR | E_WARNING | E_PARSE);

// Reporting E_NOTICE can be good too (to report uninitialized
// variables or catch variable name misspellings ...)
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

// Report all errors except E_NOTICE
// This is the default value set in php.ini
error_reporting(E_ALL & ~E_NOTICE);
// For PHP < 5.3 use: E_ALL ^ E_NOTICE

// Report all PHP errors (see changelog)
error_reporting(E_ALL);

// Report all PHP errors
error_reporting(-1);

// Same as error_reporting(E_ALL);
ini_set('error_reporting', E_ALL);

?>

Ответ 3

Для командной строки php установите

error_reporting = E_ALL & ~E_NOTICE

in /etc/php5/cli/php.ini

команда php выполняется, а затем выводит уведомления.

Ответ 4

<?php

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

// Report simple running errors
error_reporting(E_ERROR | E_WARNING | E_PARSE);

// Reporting E_NOTICE can be good too (to report uninitialized
// variables or catch variable name misspellings ...)
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

// Report all errors except E_NOTICE
error_reporting(E_ALL & ~E_NOTICE);

// Report all PHP errors (see changelog)
error_reporting(E_ALL);

// Report all PHP errors
error_reporting(-1);

// Same as error_reporting(E_ALL);
ini_set('error_reporting', E_ALL);

?>

источник http://php.net/manual/en/function.error-reporting.php

Ответ 5

Используется эта строка в коде

error_reporting(E_ALL ^ E_NOTICE);  

Я думаю, что твоя хелфа полна тебе.

Ответ 6

Вы можете установить ini_set('display_errors',0); в свой script или определить, какие ошибки вы хотите отображать с помощью error_reporting().

Ответ 7

Вы ищете:

php -d error_reporting="E_ERROR | E_WARNING | E_PARSE"

Ответ 8

не вызывая ошибок:

defined('DIR_FS_CATALOG') || define('DIR_FS_CATALOG', 'whatever');

Если вам действительно нужно, измените отчет об ошибках с помощью error_reporting() на E_ALL ^ ​​E_NOTICE.

Ответ 9

Для PHP-кода:

<?php
error_reporting(E_ALL & ~E_NOTICE);

Для php.ini config:

error_reporting = E_ALL & ~E_NOTICE

Ответ 10

Вы можете проверить, определена ли константа с помощью:

<?php
if (!defined('MYCONST'))
    define('MYCONST', 'Weeha!');
?>

Ответ 11

Я считаю, что комментирование display_errors в php.ini не будет работать, поскольку по умолчанию используется значение Вкл. Вы должны установить его вместо "Off".

Не забудьте перезапустить Apache, чтобы применить изменения конфигурации.

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

Как отмечают другие, в идеале во время разработки вы должны запускать с error_reporting на самом высоком уровне, а display_errors включен. Несмотря на то, что вы впервые начинаете раздражать, эти ошибки, предупреждения, уведомления и строгие рекомендации по кодированию все складываются и позволяют вам стать лучшим кодером.

Ответ 12

Недавно я нашел этот трюк. Удалите @в начале строки, которая может вызвать предупреждение/ошибку.

Как будто по волшебству они исчезают.

Ответ 13

Используйте phpinfo() и выполните поиск Configuration File (php.ini) Path, чтобы узнать, какой путь к файлу конфигурации для php используется. PHP может иметь несколько конфигурационных файлов в зависимости от среды, в которой он работает. Обычно для консоли это:

/etc/php5/cli/php.ini

а для php выполняется apache:

/etc/php5/apache2/php.ini

И затем установите error_reporting так, как вам нужно:

http://www.phpknowhow.com/configuration/php-ini-error-settings/ http://www.zootemplate.com/news-updates/how-to-disable-notice-and-warning-in-phpini-file

Ответ 14

Как упоминалось некоторыми, и если вы автор кода, вы должны исправить все эти ошибки, уведомления и т.д., потому что это вызовет больше проблем для вас, чем их исправление (особенно при обновлении ОС). Для вашего сервера вы должны иметь ошибки, отображаемые только в ваших журналах, а не на экране клиента.

Итак, чтобы избежать ошибок в вашем браузере, вы используете флаг display_errors, как вы уже нашли:

display_errors = Off

Теперь реальная проблема заключается в том, что вы используете код другого пользователя. В этом случае изменение кода, вероятно, будет перезаписано при каждом обновлении этого кода. Это утомительно для поддержания этого кода.

В моем случае я запускаю PHP с crontab, чтобы время wp-cron.php script выполнялось. Я получал ошибки, отправленные на мои письма, которые становятся утомительными, когда вы получаете по электронной почте каждые 10 минут! В этом случае система Wordpress имеет конфигурационный файл, включающий WP_DEBUG, и они вызывают функцию error_reporting(), поэтому попытка изменить переменную error_reporting в командной строке не будет работать. Вместо этого вам нужно отредактировать файл wp-config.php в корневой папке и убедиться, что для параметра WP_DEBUG установлено значение false. В противном случае вы будете получать все эти предупреждения и уведомления все время.

Ответ 15

Я предпочитаю не устанавливать error_reporting внутри моего кода. Но в одном случае, унаследованный продукт, есть так много уведомлений, что они должны быть скрыты.

Поэтому я использовал следующий фрагмент, чтобы установить настроенное на стороне сервера значение error_reporting и вычесть E_NOTICE s.

error_reporting(error_reporting() & ~E_NOTICE);

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