PHP 5 отключить строгие стандарты ошибки - PullRequest
172 голосов
/ 08 августа 2009

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

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

Ответы [ 7 ]

182 голосов
/ 08 августа 2009

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

# 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, чтобы точно указать, куда вы хотите отправлять ошибки.

90 голосов
/ 08 августа 2009

без ошибок.

error_reporting(0);

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

error_reporting(E_ALL ^ E_STRICT);

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

error_reporting(-1);

30 голосов
/ 11 июля 2012

Все вышеприведенные решения верны. Но когда мы говорим о нормальном приложении 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)

9 голосов
/ 12 августа 2011

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

if(defined('E_STRICT')){
    error_reporting(E_ALL);
}
8 голосов
/ 03 марта 2015

В наборе php.ini:

error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT
4 голосов
/ 29 июня 2015

WordPress

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

2 голосов
/ 30 июня 2017

Я не увидел ответ, который является чистым и подходит для готового программного обеспечения, так что вот оно:

/*
 * 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...