Лучший способ подавить PHP-ошибки на рабочих серверах
Каков наилучший способ скрыть ошибки php в браузере?
Можно ли использовать следующее:
ini_set("display_errors", 1);
Любые советы по лучшей практике также будут оценены!
Я регистрирую ошибки, я просто хочу убедиться, что установка значения display_errors в off (или 0) не предотвратит регистрацию ошибок.
Ответы
Ответ 1
Лучший способ - это, конечно, регистрировать свои ошибки, а не отображать или игнорировать их.
В этом примере будут записываться ошибки в syslog, а не отображать их в браузере.
ini_set("display_errors", 0);
ini_set("log_errors", 1);
//Define where do you want the log to go, syslog or a file of your liking with
ini_set("error_log", "syslog"); // or ini_set("error_log", "/path/to/syslog/file");
Ответ 2
Предполагая, что вы контролируете файл php.ini, вы можете сделать эти изменения глобально внутри этого файла, вместо того чтобы иметь код ini_set, лежащий во всех ваших php файлах (который вы, возможно, забыли добавить в один из ваших файлов один день, который может быть плохим в производстве).
Ответ 3
задайте переменную среды на вашей машине разработки. то вы можете проверить свою среду в начале вашего кода, чтобы убедиться, что вы находитесь в среде разработки.
то вы можете установить уровень отчетности об ошибках PHP, используя функцию error_reporting().
if ( isset($_ENV['MY_APP_MODE']) && ($_ENV['MY_APP_MODE'] == 'devel') ) {
error_reporting(E_ALL);
} else {
error_reporting(0);
}
Ответ 4
Вы также можете использовать apache.htaccess для регистрации ошибок, не касаясь вашего кода:
<IfModule mod_php5.c>
php_flag display_errors Off
php_flag log_errors On
php_value error_log logs/errors
</IfModule>
Ответ 5
Файлы распространения PHP, к сожалению, отправляют смешанное сообщение об обработке сообщений об ошибках. Файл php.ini по умолчанию имеет некоторые настройки, подходящие для рабочих серверов, а другие - для серверов разработки. Вы должны включить все ошибки в dev (error_reporting = E_ALL
и display_errors = On
) и отключить их в prod (display_errors = off
, но point log_errors
). Однако сделайте все возможное, чтобы убедиться, что ошибок нет (или они обрабатываются).
Ответ 6
Лучший способ? Исправьте ошибки!
Если вам нужно быстрое временное решение, тогда ОК, чтобы отключить display_errors, но убедитесь, что вы их где-то регистрируете, потому что эта настройка сделает серьезные/синтаксические ошибки в противном случае.