Мне нужно настроить 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
)
Значением по умолчанию для параметра error_reporting является E_ALL & ~ E_NOTICE, если оно не задано в php.ini. Но при некоторой установке (особенно в установках, ориентированных на среду разработки) есть E_ALL | E_STRICT устанавливается как значение этого флага (это рекомендуемое значение во время разработки ). В некоторых случаях, особенно если вы захотите запустить некоторые проекты с открытым исходным кодом, которые были разработаны до эпохи PHP 5.3 и еще не обновлены с помощью лучших практик, определенных PHP 5.3, в вашей среде разработки вы, вероятно, столкнетесь с некоторыми такие сообщения, как вы. Лучший способ справиться с этой ситуацией – установить только E_ALL как значение флага error_reporting , либо в php.ini, либо в коде (возможно, в front-controller, таком как 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 eg 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);