Как отфильтровать уведомления через конфигурацию php.ini - PullRequest
0 голосов
/ 14 мая 2019

Недавно мы перенесли версию нашего веб-приложения на PHP с версии 5. [что-то] на 7.2, и наш apache2 php.ini настроен так, чтобы избежать регистрации уведомлений как на сервере, так и в браузере.Мне сказали, что до миграции установка работала нормально, но теперь уведомления появляются повсюду.

Это настройка:

error_reporting = E_ALL & ~E_NOTICE

Я тоже пробовал

error_reporting = E_ALL ^ (E_DEPRECATED & E_NOTICE)

, но безрезультатно.Нет файла .htaccess, переопределяющего настройку, и когда я устанавливаю переменную error_reporting на что-то другое, приложение сообщает об изменении состояния error_reporting, просто когда я указываю, что я не хочу E_NOTICE, установка делаетне работает.

Это фрагмент конфигурации, в котором рассматриваются ошибки:

display_errors = On
;error_reporting = E_ALL ^ E_DEPRECATED
;error_reporting = E_ALL ^ (E_DEPRECATED & E_NOTICE)
;error_reporting = E_COMPILE_ERROR | E_ERROR | E_CORE_ERROR
error_reporting = E_ALL & ~E_NOTICE
;E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE

Мы хотели бы избежать регистрации уведомлений как на сервере, так и в браузере.Есть идеи, что может быть не так?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 16 мая 2019

Нам удалось решить проблему, одна из наших библиотек (cache-lite by PEAR) имела строку кода, которая программно устанавливала коды регистрации в файле /usr/share/php/Cache/Lite.php в строке 25, здесь это

error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT);

мы это закомментировали, и теперь все работает нормально.Спасибо всем!

0 голосов
/ 14 мая 2019

Я предлагаю вам вместо того, чтобы скрывать notices, попробуйте написать php приложения, которые не производят notices.Сокрытие этой информации не является хорошей техникой программирования и часто оставляет неразрешенные уязвимости или ошибки.

В любом случае, ваша проблема может быть решена путем ввода в script (в начале):

error_reporting(E_ALL ^ E_NOTICE);

Thisвыключится notices ...

Я предлагаю вам прочитать руководство

Чтобы установить это значение в вашем php.ini (php.ini не являетсяApache configuration файл, это php configuration файл), который вы можете использовать (как вы уже используете):

error_reporting = E_ALL & ~E_NOTICE

и не забудьте изменить

display_errors = On

с

display_errors = Off

в вашем php.ini, не забудьте остановить Apache и перезапустить его снова, чтобы увидеть изменения ...

Посмотреть это нить и это нить

Надеюсь, это поможет.

...