Отключить отображение ошибки PHP.Ини
Я пытаюсь отключить все ошибки на моем сайте. Я следил за различными учебниками о том, как это сделать, но я продолжаю читать и открывать сообщения об ошибках. Я что-то упускаю? Я пробовал следующее в своем php.ini-файл:
;Error display
display_startup_errors = Off
display_errors = Off
html_errors = Off
docref_root = 0
docref_ext = 0
по какой-то причине, когда я делаю вызов fileopen() для файла, который не существует, я все равно получаю сообщение об ошибке. Это небезопасно для живого веб-сайта по очевидным причинам.
спасибо
10 ответов
Я всегда использую что-то вроде этого в конфигурационный файл:
// toggle this to change the setting
define('DEBUG', true);
// you want all errors to be triggered
error_reporting(E_ALL);
if(DEBUG == true)
{
// you're developing, so you want all errors to be shown
display_errors(true);
// logging is usually overkill during dev
log_errors(false);
}
else
{
// you don't want to display errors on a prod environment
display_errors(false);
// you definitely wanna log any occurring
log_errors(true);
}
Это позволяет легко переключаться между режимами отладки. Вы можете улучшить это, проверив, на каком сервере выполняется код (dev, test, acceptance, prod), и соответствующим образом изменить настройки.
обратите внимание, что никакие ошибки не будут регистрироваться, если error_reporting установлен в 0, как умно заметил Корри.
следует считать не отображается ваши сообщения об ошибках вместо этого!
Set ini_set('display_errors', 'Off');
в вашем php-коде (или непосредственно в ваш ini, если это возможно) и оставьте error_reporting на E_ALL
или любые сообщения, которые вы хотели бы найти в своих журналах.
таким образом, вы можете обрабатывать ошибки позже, пока ваши пользователи все еще не видят их.
полный пример:
define('DEBUG', true);
error_reporting(E_ALL);
if (DEBUG)
{
ini_set('display_errors', 'On');
}
else
{
ini_set('display_errors', 'Off');
}
или просто (тот же эффект):
define('DEBUG', true);
error_reporting(E_ALL);
ini_set('display_errors', DEBUG ? 'On' : 'Off');
на php.ini
закомментировать,
error_reporting = E_ALL & ~E_NOTICE
error_reporting = E_ALL & ~E_NOTICE | E_STRICT
error_reporting = E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ER… _ERROR
error_reporting = E_ALL & ~E_NOTICE
размещение ;
впереди него ( т. е. как ;error_reporting = E_ALL & ~E_NOTICE
)
для отключения в одном файле, место error_reporting(0);
после открытия php
тег.
позвольте мне быстро обобщить это для справки:
error_reporting()
адаптирует текущую активную настройку для обработчика ошибок по умолчанию.-
редактирование параметры ini отчетов об ошибках также изменяет настройки по умолчанию.
здесь необходимо отредактировать правильно
php.ini
версия - это обычно/etc/php5/fpm/php.ini
на современных серверах,/etc/php5/mod_php/php.ini
кроме того, в то время Версия CLI имеет отдельный.-
альтернативно вы можете использовать в зависимости от SAPI:
- mod_php, который:
.htaccess
Сphp_flag
опции - FastCGI: обычно местный
php.ini
- и с PHP выше 5.3 также a
.user.ini
- mod_php, который:
перезапуск веб-сервера, как обычно.
если ваш код громоздкий и каким-то образом сбрасывается эти параметры в другом месте во время выполнения, то альтернативный и быстрый способ определить пользовательский обработчик ошибок, который просто хлебает все уведомления / предупреждения / ошибки:
set_error_handler(function(){});
опять же, это не рекомендуется, просто альтернатива.
вы также можете использовать PHP error_reporting();
// disable it all for current call
error_reporting(0);
если вы хотите игнорировать ошибки только одной функции, вы можете добавить @
символ.
@any_function(); // errors are ignored
зачем отключать?
можно использовать error_reporting();
- http://php.net/manual/en/function.error-reporting.php или поставить@ -http://www.php.net/manual/en/language.operators.errorcontrol.php перед вашим fileopen ().
обычно я использую встроенные обработчики ошибок php, которые могут обрабатывать все возможные ошибки вне синтаксиса и по-прежнему отображать хорошую страницу "вниз для обслуживания" в противном случае:
откройте php.ini-файл (Если вы используете Linux - sudo vim /etc/php5/apache2/php.ini)
добавьте эти строки в этот файл
error_reporting = E_ALL & ~E_WARNING
(Если вам нужно отключить любые другие ошибки -> error_reporting = СОСТАВ E_ALL & ~E_DEPRECATED & ~УРОВНЯ E_STRICT & ~E_NOTICE & ~E_WARNING)
display_errors = On
и, наконец, вам нужно перезагрузить сервер APACHE.