Отключить ошибку отображения PHP.ini

Я пытаюсь отключить все ошибки на моем веб-сайте. Я следил за различными учебниками о том, как это сделать, но я продолжаю читать и открывать сообщения об ошибках. Есть что-то, чего я не хватает? Я пробовал следующее в файле php.ini:

;Error display display_startup_errors = Off display_errors = Off html_errors = Off docref_root = 0 docref_ext = 0 

По какой-то причине, когда я делаю вызов fileopen () для файла, который не существует, я все равно получаю сообщение об ошибке. Это небезопасно для живого веб-сайта по очевидным причинам.

благодаря

Я всегда использую что-то подобное в файле конфигурации:

 // 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, accept, prod) и соответствующим образом измените ваши настройки.

Обратите внимание, что ошибки не будут регистрироваться, если для параметра error_reporting установлено значение 0, как это заметил Корри.

Вы должны подумать не об отображении своих сообщений об ошибках!

Установите 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 

Поместив a ; перед ним (например ;error_reporting = E_ALL & ~E_NOTICE )

Для отключения в одном файле поместите error_reporting(0); после открытия тега php .

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

 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 также .user.ini
    • Перезапуск веб-сервера, как обычно.

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

 set_error_handler(function(){}); 

Опять же, это нецелесообразно, просто альтернатива.

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

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

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

 @any_function(); // errors are ignored 

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

 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.