Подтвердить что ты не робот

Лучший способ подавить PHP-ошибки на рабочих серверах

Каков наилучший способ скрыть ошибки php в браузере?

Можно ли использовать следующее:

ini_set("display_errors", 1);

Любые советы по лучшей практике также будут оценены!

Я регистрирую ошибки, я просто хочу убедиться, что установка значения display_errors в off (или 0) не предотвратит регистрацию ошибок.

4b9b3361

Ответ 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, но убедитесь, что вы их где-то регистрируете, потому что эта настройка сделает серьезные/синтаксические ошибки в противном случае.