Notice: Constant DIR_FS_CATALOG already defined
Я уже закомментирован display_errors
в php.ini
, но не работаю.
Как заставить PHP не выводить такие вещи в браузеры?
ОБНОВИТЬ
Я положил display_errors = Off
туда, но он до сих пор сообщает о таких уведомлениях,
Это проблема с PHP 5.3?
Сообщение о большом количестве вызовов тоже.
php
error-handling
constants
user198729
источник
источник
grep display_errors /path/to/php.ini
чтобы увидеть, не переопределяется ли ваша строка где-нибудь в файле. Вот что со мной происходило.ini_set('display_errors',0)
в своем файле php. Когда ваши ini-настройки не работают, вы должны проверить,phpinfo()
отображается ли желаемое значение. В противном случае вы либо изменили неправильный ini-файл, либо что-то перезаписывает ваши значения из php.iniОтветы:
Вы можете установить
display_errors
на0
или использоватьerror_reporting()
функцию.Однако уведомления раздражают (я могу отчасти посочувствовать ), но они служат цели. Вы не должны определять константу дважды, второй раз не сработает, и константа останется неизменной!
источник
display_errors
работает не так, как ожидалось.phpinfo()
проверить, действительно ли применяется настройка. Простите, но я сильно сомневаюсь, что вы нашли ошибку в PHP 5.3 - я поверю, только когда увижу ее :)local value
master value
ini_set
директив илиphp_ini_flag
настроек в.htaccess
файлах.Из документации PHP ( error_reporting ):
Другие интересные варианты этой функции:
источник
Для командной строки php установите
в
/etc/php5/cli/php.ini
php
выполнение команды затем пропускает уведомления.источник
источник http://php.net/manual/en/function.error-reporting.php
источник
Использовал эту строку в вашем коде
Я думаю, это вам поможет.
источник
Ты ищешь:
источник
/usr/bin/php -d error_reporting="E_ERROR | E_WARNING | E_PARSE" -f /path/to/file.php
для своего crontabЯ предпочитаю не устанавливать
error_reporting
внутри моего кода. Но в одном случае с устаревшим продуктом существует так много уведомлений, что их необходимо скрыть.Поэтому я использовал следующий фрагмент, чтобы установить значение, настроенное на стороне сервера,
error_reporting
но вычестьE_NOTICE
s.Теперь настройку отчетов об ошибках можно дополнительно настроить в
php.ini
или.htaccess
. Только уведомления всегда будут отключены.источник
Вы можете установить
ini_set('display_errors',0);
в своем скрипте или определить, какие ошибки вы хотите отображатьerror_reporting()
.источник
ini_set
метод, упомянутый здесь,error_reporting(0)
метод, упомянутый в другом месте, не имел никакого эффекта.не вызывая ошибок:
Если вам действительно нужно, измените отчет об ошибках с помощью error_reporting () на E_ALL ^ E_NOTICE.
источник
Для кода PHP:
Для
php.ini
конфигурации:источник
Я обнаружил этот трюк недавно. Ударьте @ в начале строки, которая может вызвать предупреждение / ошибку.
Как по волшебству они исчезают.
источник
Используйте 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- файл
источник
Как упоминалось некоторыми, и если вы являетесь автором кода, вам следует исправить все эти ошибки, уведомления и т. Д., Потому что это вызовет у вас больше проблем в долгосрочной перспективе, чем их отсутствие (особенно при обновлении ОС). Для вашего сервера ошибки должны отображаться только в ваших журналах, а не на экране клиента.
Итак, чтобы избежать ошибок в вашем браузере, вы используете тот
display_errors
флаг, который вы уже нашли:Теперь настоящая проблема заключается в том, что вы запускаете чужой код. В этом случае изменение кода, вероятно, будет перезаписываться каждый раз, когда вы обновляете этот код. Поддерживать этот код утомительно.
В моем случае я запускаю PHP,
crontab
чтобыwp-cron.php
сценарий работал время от времени. Мне присылали сообщения об ошибках, что становится утомительным, если вы получаете одно письмо каждые 10 минут! В этом случае, однако, в системе Wordpress есть файл конфигурации, включающий a,WP_DEBUG
и они вызываютerror_reporting()
функцию, поэтому попытка изменитьerror_reporting
переменную в командной строке не сработает. Вместо этого вам нужно отредактироватьwp-config.php
файл в корневой папке и убедиться, что дляWP_DEBUG
него установлено значениеfalse
. В противном случае вы будете постоянно получать все эти предупреждения и уведомления.источник
Вы можете проверить, определена ли уже константа, используя:
источник
Я считаю, что комментирование display_errors в php.ini не сработает, потому что по умолчанию включено. Вместо этого вы должны установить для него значение «Выкл.».
Не забудьте перезапустить Apache, чтобы применить изменения конфигурации.
Также обратите внимание, что, хотя вы можете установить display_errors во время выполнения, его изменение здесь не влияет на FATAL ошибки.
Как отмечали другие, в идеале во время разработки вы должны работать с error_reporting на максимально возможном уровне и с включенным display_errors. Эти ошибки, предупреждения, уведомления и строгие советы по кодированию, хотя и раздражающие, когда вы только начинаете, складываются и позволяют вам стать лучшим программистом.
источник
Двойные константы
Чтобы исправить конкретную ошибку здесь, вы можете проверить, определена ли уже константа, прежде чем определять ее:
Я бы лично начал с поиска константы в кодовой базе
DIR_FS_CATALOG
, а затем заменил бы двойное определение этим.Скрытие встроенных уведомлений PHP в каждом конкретном случае
PHP предоставляет
@
оператор контроля ошибок, который можно использовать для игнорирования определенных функций, вызывающих уведомления или предупреждения.Используя это, вы можете игнорировать / отключать уведомления и предупреждения в каждом конкретном случае в вашем коде, что может быть полезно в ситуациях, когда ошибка или уведомление являются преднамеренными, запланированными или просто раздражающими и не могут быть устранены в источнике , Поместите
@
перед функцией или переменной, вызывающей уведомление, и оно будет проигнорировано.Вот пример:
Подробнее об этом можно найти в документации PHP по операторам управления ошибками .
источник