Каков наилучший способ скрыть ошибки php в браузере?
Будет ли это использовать следующее:
ini_set("display_errors", 1);
Любые советы по лучшей практике также будут оценены!
Я регистрирую ошибки, я просто хочу удостовериться, что установка значения display_errors в off (или 0) не предотвратит регистрацию ошибок.
Лучше всего, конечно, регистрировать свои ошибки, а не отображать или игнорировать их.
В этом примере будут записываться ошибки в 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");
Предполагая, что вы контролируете файл php.ini, вы можете сделать эти изменения глобально внутри этого файла, вместо того чтобы иметь код ini_set, лежащий во всех ваших php-файлах (который вы, возможно, забыли вставить в один из ваших файлов в один прекрасный день, может быть плохой в производстве).
установите переменную среды на вашей машине разработки. то вы можете проверить свою среду в начале вашего кода, чтобы убедиться, что вы находитесь в среде разработки. то вы можете установить уровень отчетности об ошибках PHP, используя функцию error_reporting ().
if ( isset($_ENV['MY_APP_MODE']) && ($_ENV['MY_APP_MODE'] == 'devel') ) { error_reporting(E_ALL); } else { error_reporting(0); }
Вы также можете использовать apache .htaccess для регистрации ошибок, не касаясь вашего кода:
<IfModule mod_php5.c> php_flag display_errors Off php_flag log_errors On php_value error_log logs/errors </IfModule>
К сожалению, файлы распространения PHP посылают смешанное сообщение об обработке сообщений об ошибках. Файл php.ini по умолчанию имеет некоторые настройки, подходящие для рабочих серверов, а другие – для серверов разработки. Вы должны включить все ошибки в dev ( error_reporting = E_ALL
и display_errors = On
) и выключить в prod ( display_errors = off
но point log_errors
где-то). Однако сделайте все возможное, чтобы убедиться, что ошибок нет (или они обрабатываются).
Лучший путь? Исправьте ошибки!
Если вам нужно быстрое временное решение, тогда все в порядке, чтобы отключить display_errors, но убедитесь, что вы их где-то регистрируете, потому что эта настройка сделает серьезные / синтаксические ошибки в противном случае.