2008-12-01 3 views
21

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

ли было бы использовать следующее:

ini_set("display_errors", 1); 

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

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

+0

Выполняйте, как я сказал, и ваши ошибки не будут отображаться, но будут зарегистрированы. – 2008-12-01 23:22:58

+0

Мне нравится слово «Лучше», чем «Лучшее». – kta 2016-12-22 01:05:44

ответ

46

Лучшим способом, конечно, является регистрация ваших ошибок вместо отображения или игнорирования их.

В этом примере будут записываться ошибки в 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"); 
+0

В качестве «хэдз-апов» вместо «syslog» вы можете поместить путь к файлу и записать журнал в нужное место. – 2015-12-01 21:05:07

3

Предполагая, что вы находитесь в контроле файл php.ini, вы можете внести эти изменения в этом файле вместо того, чтобы код ini_set прокладки вокруг во всех ваших PHP-файлов (которые вы можете забыть положить в одном из ваших файлов один день, что может быть плохо в производстве).

1

Вы также можете использовать апачский .htaccess для журнала ошибок, не касаясь кода:

<IfModule mod_php5.c> 
    php_flag  display_errors Off 
    php_flag  log_errors  On 
    php_value  error_log  logs/errors 
</IfModule> 
0

лучший способ? Исправьте ошибки!

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

1

Файлы распространения PHP, к сожалению, отправляют смешанное сообщение об обработке сообщений об ошибках. Файл php.ini по умолчанию имеет некоторые настройки, подходящие для рабочих серверов, а другие - для серверов разработки. Вы должны включить все ошибки в dev (error_reporting = E_ALL и display_errors = On), и выключить в prod (display_errors = off, но указать log_errors где-нибудь). Однако сделайте все возможное, чтобы убедиться, что ошибок нет (или они обрабатываются).

2

установить переменную окружения на вашей машине разработки. то вы можете проверить свою среду в начале вашего кода, чтобы убедиться, что вы находитесь в среде разработки. , то вы можете установить уровень отчетности об ошибках PHP, используя функцию error_reporting().

if (isset($_ENV['MY_APP_MODE']) && ($_ENV['MY_APP_MODE'] == 'devel')) { 
    error_reporting(E_ALL); 
} else { 
    error_reporting(0); 
} 
Смежные вопросы