Отключить отображение ошибки 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 тег.


в php.Ини, вы должны попробовать это для всех ошибок

error_Reporting = off

позвольте мне быстро обобщить это для справки:

  • 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

    • перезапуск веб-сервера, как обычно.

если ваш код громоздкий и каким-то образом сбрасывается эти параметры в другом месте во время выполнения, то альтернативный и быстрый способ определить пользовательский обработчик ошибок, который просто хлебает все уведомления / предупреждения / ошибки:

set_error_handler(function(){});

опять же, это не рекомендуется, просто альтернатива.


вы также можете использовать PHP error_reporting();

// disable it all for current call
error_reporting(0);

если вы хотите игнорировать ошибки только одной функции, вы можете добавить @ символ.

@any_function(); // errors are ignored

в php.Ини, вы должны попробовать это для всех ошибок

display_errors = On

зачем отключать?

можно использовать error_reporting(); - http://php.net/manual/en/function.error-reporting.php или поставить@ -http://www.php.net/manual/en/language.operators.errorcontrol.php перед вашим fileopen ().


обычно я использую встроенные обработчики ошибок php, которые могут обрабатывать все возможные ошибки вне синтаксиса и по-прежнему отображать хорошую страницу "вниз для обслуживания" в противном случае:

ошибка форматирования 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.