Php disable deprecated warning

How to remove warning and error messages in PHP

Error warnings for PHP are helpful during development, where you can use them for debugging. Showing the same errors and warnings in a production environment could pose a security risk as it could expose sensitive and exploitable information about the system.

Warning and error reporting in PHP are configured via the display_error error_reporting directives. display_error defines if errors are displayed at all, while error_reporting allows you to specify the type or level of errors to show.

Steps to remove error and warning messages in PHP:

$ sudo vi /etc/php/7.4/apache2/php.ini
; This directive controls whether or not and where PHP will output errors, ; notices and warnings too. Error output is very useful during development, but ; it could be very dangerous in production environments. Depending on the code ; which is triggering the error, sensitive information could potentially leak ; out of your application such as database usernames and passwords or worse. ; For production environments, we recommend logging errors rather than ; sending them to STDOUT. ; Possible Values: ; Off = Do not display any errors ; stderr = Display errors to STDERR (affects only CGI/CLI binaries!) ; On or stdout = Display errors to STDOUT ; Default Value: On ; Development Value: On ; Production Value: Off ; http://php.net/display-errors display_errors = On

Set the value to On instead to further tune the types of messages to display using error_reporting directive.

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Error handling and logging ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; This directive informs PHP of which errors, warnings and notices you would like ; it to take action for. The recommended way of setting values for this ; directive is through the use of the error level constants and bitwise ; operators. The error level constants are below here for convenience as well as ; some common settings and their meanings. ; By default, PHP is set to take action on all errors, notices and warnings EXCEPT ; those related to E_NOTICE and E_STRICT, which together cover best practices and ; recommended coding standards in PHP. For performance reasons, this is the ; recommend error reporting setting. Your production server shouldn't be wasting ; resources complaining about best practices and coding standards. That's what ; development servers and development settings are for. ; Note: The php.ini-development file has this setting as E_ALL. This ; means it pretty much reports everything which is exactly what you want during ; development and early testing. ; ; Error Level Constants: ; E_ALL - All errors and warnings (includes E_STRICT as of PHP 5.4.0) ; E_ERROR - fatal run-time errors ; E_RECOVERABLE_ERROR - almost fatal run-time errors ; E_WARNING - run-time warnings (non-fatal errors) ; E_PARSE - compile-time parse errors ; E_NOTICE - run-time notices (these are warnings which often result ; from a bug in your code, but it's possible that it was ; intentional (e.g., using an uninitialized variable and ; relying on the fact it is automatically initialized to an ; empty string) ; E_STRICT - run-time notices, enable to have PHP suggest changes ; to your code which will ensure the best interoperability ; and forward compatibility of your code ; E_CORE_ERROR - fatal errors that occur during PHP's initial startup ; E_CORE_WARNING - warnings (non-fatal errors) that occur during PHP's ; initial startup ; E_COMPILE_ERROR - fatal compile-time errors ; E_COMPILE_WARNING - compile-time warnings (non-fatal errors) ; E_USER_ERROR - user-generated error message ; E_USER_WARNING - user-generated warning message ; E_USER_NOTICE - user-generated notice message ; E_DEPRECATED - warn about code that will not work in future versions ; of PHP ; E_USER_DEPRECATED - user-generated deprecation warnings ; ; Common Values: ; E_ALL (Show all errors, warnings and notices including coding standards.) ; E_ALL & ~E_NOTICE (Show all errors, except for notices) ; E_ALL & ~E_NOTICE & ~E_STRICT (Show all errors, except for notices and coding standards warnings.) ; E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR (Show only errors) ; Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED ; Development Value: E_ALL ; Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT ; http://php.net/error-reporting error_reporting = E_ALL
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
$ sudo systemctl restart apache2

Источник

Читайте также:  What is final arraylist in java

PHP ОТКЛЮЧИТЬ DEPRECATED

Для отключения функционала, помеченного как устаревший (deprecated) в PHP, нужно указать его в параметре error_reporting и не забыть поднять уровень сообщений об ошибках для вывода сообщений о deprecated.

Например, если нужно отключить deprecated для функций, можно использовать следующий код:

error_reporting(E_ALL & ~E_DEPRECATED);
ini_set(‘display_errors’, ‘On’);

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

function ignoreDeprecated($errno, $errstr, $errfile, $errline) if (!(error_reporting() & E_DEPRECATED)) return;
>
throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
>
set_error_handler(‘ignoreDeprecated’);

Этот обработчик ошибок пропускает все сообщения, кроме устаревших функций, которые он обрабатывает как исключение. Таким образом, если код содержит вызов устаревшей функции, ошибка будет обработана и не приведет к сбою выполнения всего скрипта.

PHP : Turn off deprecated errors in PHP 5.3

Fix create_function() is deprecated — Critical error WordPress PHP

New in PHP 8.2 — Deprecate Dynamic Property Declaration

7 ошибок при изучении Php

PHP Warning Deprecated: Creation of dynamic property is deprecated

Deprecated Dynamic Properties in PHP 8.2

Deprecated Error Required parameter follows optional parameter in WordPress and Php Script-Live Fix

Deprecated Function get magic quotes runtime

Источник

Блог

У меня есть производственный сервер, на котором запущено коммерческое программное обеспечение, использующее устаревшую функциональность. Мы уже отключили вывод ошибок в php.ini — display_errors = Off — поэтому пользователи не видят эти ошибки. Однако мы все еще регистрируем ошибки PHP — log_errors = On — для отслеживания проблем.

Проблема: PHP, похоже, игнорирует error_reporting директиву в отношении того, что она в конечном итоге передает в журнал ошибок. Независимо от того, какая комбинация значений введена, запись в файл происходит так, как будто для меня установлено значение E_ALL . Следовательно, мой журнал ошибок переполнен уведомлениями об устаревании.

Читайте также:  PHP LDAP LOGIN

В php.ini задано значение часового пояса по умолчанию, поэтому проблемы, связанные с часовым поясом, не имеют значения.

Обновления для программного пакета пока недоступны, поэтому, пожалуйста, никаких рекомендаций «просто исправьте устаревший код». Я специально ищу способы предотвратить сброс PHP устаревших ошибок в журнал, не отключая полностью ведение журнала файлов.

Комментарии:

1. Просто исправьте устаревший код. утки

2. Ты забавный, забавный человек, Томалак. 😛

Ответ №1:

Когда PHP запускается как модуль Apache, вы можете получить доступ / изменить любой параметр конфигурации, доступный в php.ini , используя директивы в файлах конфигурации Apache. Эти директивы являются…

Разница между php_* и php_admin_* версиями является ключом к этой проблеме. Значения, установленные с помощью php_admin_value и php_admin_flag , могут быть установлены только в конфигурациях Apache global и VirtualHost; они не переопределяются .htaccess или ini.set().

error_reporting() Функция эквивалентна ini_set() вызову и подпадает под те же правила.

Итак, я зашел в конфигурацию virtualhost для рассматриваемого сайта и добавил следующие строки…

 php_admin_value error_reporting 22527 php_admin_value error_log /custom/log/path/php_errors.log php_admin_flag log_errors On php_admin_flag display_errors Off 
  1. Первая строка — это побитовое значение для error_reporting = E_ALL amp; ~E_DEPRECATED . Я восстановил это значение, создав простой скрипт:
 ini_set("error_reporting", E_ALL amp; ~E_DEPRECATED); echo ini_get("error_reporting"); 

Опять же, приоритет и порядок операций здесь являются ключевыми. Эти значения заменяют значения, определенные в php.ini , и в то же время не могут быть переопределены другими изменениями в приложении или в .htaccess файлах.

Более подробную информацию об изменении значений конфигурации за пределами php.ini можно найти в документации PHP.

Комментарии:

1. Спасибо за этот ответ. Однако, error_reporting = E_ALL amp; ~E_DEPRECATED amp; ~E_NOTICE не работает. phpinfo() получает правильное значение ( 22519 ). Но мой журнал все еще заполнен E_DEPRECATED . Есть идеи?

2. @пока вы когда-нибудь не найдете свой ответ?

3. @Ascherer у меня это тоже не работает.. Пока мне сходит с рук: tail -f /custom/log/file | grep -v «is deprecated occured»

4. Я согласен, это не работает с Apache 2.4. «/var/log/apache2/error.log» по-прежнему заполнен этими сообщениями.

Ответ №2:

Похоже, что само программное обеспечение может устанавливать уровень ошибки, таким образом переопределяя настройку в php.ini .

Читайте также:  Php header already sent check your

Кстати, если вы используете Cacti, смотрите здесь. Даже если вы не используете Cacti, я думаю, что это довольно хорошо подводит итог сценарию.

Ответ №3:

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

 $var = @$_GET['something not set']; 

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

Комментарии:

1. Не используйте @! Используйте настройки отчетов об ошибках PHP, чтобы показывать или скрывать предупреждения. При использовании @ вообще нет уведомления. Используя настройки отчетов об ошибках, вы можете записывать все ошибки в журнал ошибок, не показывая их. Таким образом, они не будут потеряны.

2. Во-первых, в моем посте есть довольно заметный отказ от ответственности. Во-вторых, между отключением всех ошибок и скрытием только одной известной ошибки, которая заполняет журналы, я бы выбрал последний подход. В-третьих… вы понимаете, что это ответ, который я написал 5 лет назад? С тех пор у нас было 6 основных версий PHP…

3. Иногда @ это полезно, особенно для файловых операций, когда команда может завершиться ошибкой, независимо от того, насколько упреждающей она является. Например, можно использовать file_exists для проверки наличия файла перед использованием file_get_contents , но файл может быть удален другим сеансом между ними, поэтому E_WARNING выдается.

Источник

Оцените статью