РЕДАКТИРОВАТЬ: Моя среда выглядит следующим образом (это относится к
ответ):
- Microsoft IIS 10.0 Express
- Windows 7 Профессиональная SP1
- Версия PHP 5.6.16 x86 FastCGI
Я пытаюсь выяснить, для чего предназначена настройка «display_errors».
В следующем коде я пытаюсь скрыть уведомление PHP это бросается в строке 9. Естественно, можно подумать, что просто установка
display_errors = 'Off'
достиг бы этого, но это, кажется, не имеет никакого эффекта.
Я понимаю, что «error_reporting» позволяет вам выбрать который ошибки обнаруживаются, и «display_errors» определяет, отображаются ли сообщения об ошибках пользователю. Я ошибаюсь? В большинстве моих поисков в Google я вижу людей, которые настраивают и то и другое
error_reporting = 0
а также
display_errors = 'Off'
Но зачем вообще беспокоиться о
display_errors = 'Off'
когда это никак не сказывается?
Мой тестовый код:
<?php
//ini_set("error_reporting", 0);
ini_set("display_errors", "Off");
ini_set("display_startup_errors", "Off");
date_default_timezone_set("America/Chicago");
echo "Hey<br />";
echo $myarr["hey"];
Когда я запускаю этот код, я вижу следующее сообщение об ошибке (это ссылка на изображение, так как у меня недостаточно репутации, чтобы разместить его здесь):
http://i.imgur.com/mupV8BO.png
PHP: сообщение об ошибке, сгенерированное для строки 9, должно быть скрыто от пользователя. Почему «display_errors» существует, если он ничего не делает?
После проб и ошибок и используя объяснения ShiraNai7, я обнаружил, что это ошибка в PHP на Microsoft IIS и FastCGI. Смотрите ссылку на ошибку:
Ошибка # 44729 display_errors = Off не соблюдается
Да, могут показаться ошибки PHP и их конфигурация немного действительно странно, если кто-то не знаком с внутренней работой. Там много чего происходит.
display_errors
error_reporting
не будет напечатаноlog_errors
error_log
error_reporting
не будет зарегистрированerror_log
error_reporting
set_error_handler()
false
будет вызываться обработчик ошибок PHP по умолчанию (и печатать / регистрировать ошибки в соответствии с настройками)null
или же true
или выдает исключение, обработчик ошибок PHP по умолчанию НЕ будет вызываться (и, следовательно, он не будет ничего печатать / регистрировать).set_exception_handler()
Но зачем вообще беспокоиться о «display_errors = ‘Off’», когда он все равно не дает эффекта?
Существуют комбинации вышеуказанных настроек, которые делают display_errors
не бесполезно
Примеры:
display_errors
должен быть off
в php.ini на производственных серверах для предотвращения утечки потенциально конфиденциальных данных
display_errors
в off
а также log_errors
в on
error_log
, Ты устанавливаешь display_errors
в off