PHP 5 отключить строгие стандарты ошибки
Мне нужно настроить мой PHP-скрипт вверху, чтобы отключить отчеты об ошибках для строгих стандартов.
Кто-нибудь может помочь?
7 ответов
Вы хотите отключить создание отчетов об ошибках или просто запретить пользователю их видеть? Обычно рекомендуется регистрировать ошибки даже на производственном сайте.
# 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
)
Значением по умолчанию флага error_reporting является 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-root, следующим образом:
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);