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