Запретить вызовам error_reporting () и / или ini_set ('display_errors', 'On') переопределять настройки php.ini - PullRequest
3 голосов
/ 19 мая 2011

У меня был этот параметр в моем файле php.ini:

error_reporting = E_ERROR|E_PARSE|E_CORE_ERROR|E_COMPILE_ERROR

Но я все еще получал тысячи записей NOTICE и WARNING в журнале ошибок каждую минуту. Я, конечно, понимаю, что мне лучше справиться с этими ошибками, но это не мой код, и мне не платят за это, мне просто нужно было избавиться от этих жирных файлов error_log (Гбс в день).

Я искал код и удалил все error_reporting() звонки, и это помогло, но есть ли способ запретить error_reporting() переопределение настроек php.ini?

Могу ли я также запретить вызовам ini_set('display_errors') переопределять настройки php.ini?

Ответы [ 3 ]

3 голосов
/ 19 мая 2011

есть ли способ запретить error_reporting () переопределять настройки php.ini?

Может быть.

Если вы используете mod_php в Apache (или FastCGI через FPM), вы можете использовать php_admin_value и php_admin_flag до принудительно определенных настроек INI таким образом, чтобы ini_set не сможет переопределить.

К сожалению, я не знаю пути к нейтрализации error_reporting, кроме disable_functions - но при каждом его использовании выдается предупреждение PHP.

(В качестве примечания мне кажется любопытным, что разработчик установил бы уровень сообщений об ошибках при производстве и продолжал производить такой большой объем журналов.)

2 голосов
/ 19 мая 2011

Вы можете попробовать настройку disable_functions php.ini и отключить error_reporting() и ini_set(). Но это ПОЛНОСТЬЮ отключает их, поэтому, если вам нужно изменить настройки, отличные от error_reporting во время выполнения, вы будете SOL.

0 голосов
/ 19 мая 2011

Согласно следующим страницам, движок PHP устанавливает, когда и где можно установить опцию конфигурации.Нет способа предотвратить это программно:

http://www.php.net/manual/en/configuration.changes.modes.php http://php.net/manual/en/errorfunc.configuration.php

...