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

Notice: Constant DIR_FS_CATALOG already defined

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

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

обновление

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

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

сообщает о множестве Стек Вызовов тоже..

14 ответов


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


из документации PHP (предназначенных):

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

?>

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

error_reporting = E_ALL & ~E_NOTICE

на /etc/php5/cli/php.ini

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


<?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


Использовал Эту Строку В Коде

error_reporting(E_ALL ^ E_NOTICE);  

Я думаю, что его helf полон для вас.


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


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

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

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


вы ищете:

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

для PHP кода:

<?php
error_reporting(E_ALL & ~E_NOTICE);

на php.ini config:

error_reporting = E_ALL & ~E_NOTICE

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

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

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

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

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

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


недавно я обнаружил этот трюк. Огреть @ в начале строки, Что может вызвать ошибки.

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


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

/ etc/php5/cli / php.ini

и для php, запущенного apache, это:

/и т. д./В php5/apache2 не/РНР.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


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

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

display_errors = Off

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

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