EDIT: My Environment is the following (this is relevant to the answer):
- Microsoft IIS 10.0 Express
- Windows 7 Professional SP1
- PHP Version 5.6.16 x86 FastCGI
I am trying to figure out what purpose the setting "display_errors" has. In the following code, I am attempting to hide the PHP Notice that is thrown at line 9. Naturally one would think that simply setting
display_errors = 'Off'
would accomplish this, but it seems to have no effect.
I am of the understanding that "error_reporting" lets you choose which errors are caught, and "display_errors" determines whether or not the error messages are echoed to the user. Am I mistaken? In most of my Google searches, I see people setting both
error_reporting = 0
and
display_errors = 'Off'
But, why even bother with
display_errors = 'Off'
when it does not have an effect anyway?
My test code:
<?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"];
When I run this code, I see the following error message (this is a link to the image, since I don't have enough reputation to post it here):
https://i.sstatic.net/qB6Au.png
PHP: The error message generated for line 9 should be hidden from the user. Why does "display_errors" exist if it does nothing?
After trial and error and using ShiraNai7's explanations I have found that this is a bug in PHP on Microsoft IIS and FastCGI. See link to bug:
Bug #44729 display_errors = Off not respected