Мне нужно настроить мой PHP-скрипт вверху, чтобы отключить отчеты об ошибках для строгих стандартов.
Кто-нибудь может помочь?
Мне нужно настроить мой 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
директиву, чтобы точно указать, куда вы хотите добавить ошибки.
php.ini
файле, например, если вы не можете изменить код PHP.
php.ini
или .htaccess
или где-то в моем PHP-коде.
Без ошибок.
error_reporting(0);
или просто не строго
error_reporting(E_ALL ^ E_STRICT);
и если вы хотите снова отобразить все ошибки, используйте
error_reporting(-1);
^
это хорошо только для исключения одного типа ошибки. Если вы хотите отключить дополнительные типы, вы должны использовать E_ALL & ~E_DEPRECATED & ~E_STRICT
формат. Или, возможно, (E_ALL & ~(E_DEPRECATED | E_STRICT))
формат.
ini_set('error_reporting', E_ALL&~E_STRICT);
Подавить сообщение об ошибках STRICT в PHP> = 5.4ini_set('error_reporting', E_ALL^E_STRICT);
^
("xor"), а не & ~
("и не") - плохая идея ! ^
зависит от предположения, что, например, E_STRICT является частью E_ALL и всегда будет его частью. Это плохо, потому что E_ALL изменился в прошлом (E_STRICT не был прошлым, но сейчас, начиная с PHP 5.4). Если предположение не ^
выполнится однажды, оно не только сломается, но и сделает противоположное тому, что должно было сделать: оно включит E_STRICT из-за того, как работает XOR ( ^
). & ~
однако всегда отключает E_STRICT, независимо от текущего значения E_ALL. Поэтому & ~
следует использовать.
Все вышеприведенные решения верны. Но когда мы говорим о нормальном приложении 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
)
php_admin_value error_reporting
для этого, чтобы работать (в конфиге vhost).
Значением по умолчанию флага error_reporting является E_ALL & ~ E_NOTICE, если оно не установлено в php.ini. Но в некоторых установках (особенно в установках, ориентированных на среды разработки) есть E_ALL | E_STRICT устанавливается как значение этого флага (это рекомендуемое значение при разработке ). В некоторых случаях, особенно когда вы захотите запустить несколько проектов с открытым исходным кодом, которые были разработаны до эры PHP 5.3 и еще не обновлены с учетом передовых методов, определенных PHP 5.3, в вашей среде разработки вы, вероятно, столкнетесь с получением некоторых сообщения, как вы получаете. Лучший способ справиться с этой ситуацией - установить только E_ALL в качестве значения php.ini или в коде. флага error_reporting , либо в (вероятно, в front-контроллере, таком как index.php в web-root, следующим образом:
if(defined('E_STRICT')){
error_reporting(E_ALL);
}
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);
E_ALL & ~E_DEPRECATED & ~E_STRICT
для производства. Обратите внимание, что они предлагают вам отключить строгие стандарты.