PHP 5 ошибка отключения строгих стандартов

StackOverflow https://stackoverflow.com/questions/1248952

  •  12-09-2019
  •  | 
  •  

Вопрос

Мне нужно настроить мой PHP-скрипт вверху, чтобы отключить отчеты об ошибках для строгих стандартов.

Кто - нибудь может помочь ?

Это было полезно?

Решение

Хотите ли вы отключить отчеты об ошибках или просто запретить пользователю их видеть?Обычно полезно регистрировать ошибки, даже на рабочем сайте.

# in your PHP code:
ini_set('display_errors', '0');     # don't show any errors...
error_reporting(E_ALL | E_STRICT);  # ...but do log them

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

Другие советы

Чтобы не было ошибок.

error_reporting(0);

или просто не строго

error_reporting(E_ALL ^ E_STRICT);

и если вы когда-нибудь захотите снова отобразить все ошибки, используйте

error_reporting(-1);

Все вышеперечисленные решения верны.Но когда мы говорим об обычном PHP-приложении, их необходимо включать в каждую необходимую страницу.Способ решения этой проблемы - через .htaccess в корневой папке.Просто чтобы скрыть ошибки.[Поместите в файл одну из следующих строк]

php_flag display_errors off

Или

php_value display_errors 0

Далее, чтобы настроить отчет об ошибках

php_value error_reporting 30719

Если вам интересно, как значение 30719 пришли, E_ALL (32767), E_STRICT (2048) на самом деле являются константами, которые содержат числовое значение и (32767 - 2048 = 30719)

Значение по умолчанию сообщение об ошибке флаг - это E_ALL и ~E_NOTICE если не задано в php.ini.Но в некоторых установках (особенно установках, ориентированных на среды разработки) имеет E_ALL | E_STRICT устанавливается как значение этот флаг (это тот самый рекомендуемое значение при разработке).В некоторых случаях, особенно когда вы захотите запустить некоторые проекты с открытым исходным кодом, которые были разработаны до эпохи PHP 5.3 и еще не обновлены в соответствии с лучшими практиками, определенными PHP 5.3, в вашей среде разработки вы, вероятно, столкнетесь с получением некоторых сообщений, подобных тем, которые вы получаете.Лучший способ справиться с этой ситуацией - установить только E_ALL как значение сообщение об ошибке флаг, либо в php.ini или в код (вероятно, в интерфейсном контроллере, таком как index.php в веб-корне следующим образом:

if(defined('E_STRICT')){
    error_reporting(E_ALL);
}

В php.ini установлено:

error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT

WordPress

Если вы работаете в среде WordPress, Wordpress устанавливает уровень ошибки в файле wp-includes/load.php в функции wp_debug_mode().Таким образом, вам нужно изменить уровень ПОСЛЕ вызова этой функции (в файле, который не проверен в git, так что это только разработка), или либо изменить напрямую error_reporting() вызов

Я не нашел ответа, который был бы понятен и подошел бы для готового к использованию программного обеспечения, так что вот он:

/*
 * Get current error_reporting value,
 * so that we don't lose preferences set in php.ini and .htaccess
 * and accidently reenable message types disabled in those.
 *
 * If you want to disable e.g. E_STRICT on a global level,
 * use php.ini (or .htaccess for folder-level)
 */
$old_error_reporting = error_reporting();

/*
 * Disable E_STRICT on top of current error_reporting.
 *
 * Note: do NOT use ^ for disabling error message types,
 * as ^ will re-ENABLE the message type if it happens to be disabled already!
 */
error_reporting($old_error_reporting & ~E_STRICT);


// code that should not emit E_STRICT messages goes here


/*
 * Optional, depending on if/what code comes after.
 * Restore old settings.
 */
error_reporting($old_error_reporting);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top