php.ini Error Settings
Error settings in php.ini tell PHP interpreter what kind of errors should be reported and where those should be reported. You may enable these settings in your development environment and disable few in your production environment since useful information error reports provide can also be sensitive information that outsiders shouldn’t see.
display_errors
Default value of this setting is ‘On’. It tells PHP interpreter that if it finds a type of error mentioned in error_reporting setting then add it to the output of the script. This basically means to show the errors in web browser.
display_startup_errors
Default value of this setting is ‘Off’. This tells whether to display errors that occur in PHP’s startup sequence. PHP manual recommends turning this ‘On’ only in your development environment as an aid for debugging.
log_errors
Default value of this setting is ‘Off’. This setting tells whether errors should be logged in web server’s error log file. When you finish your application and put it live, it’s a good practice that you turn ‘Off’ display_errors and turn ‘On’ log_errors in your production server’s php.ini file.
This prevents users seeing any sensitive information that can go with error reports and let you still see them via web server’s error log. But in development, you would rather like to see errors on the web browser and would set the settings other way around.
error_reporting
This setting tells what type of errors should be displayed and/or logged. There are constants that can be given as values to this setting and there is single constant (E_ALL) that represents all error types except one (E_STRICT). E_STRICT error type was added in PHP5 and is not that common. According to PHP manual, idea of introducing this type is to encourage you to use latest methods of coding. Thus it can warn you about using deprecated functions.
Default value of this setting is like below.
error_reporting = E_ALL & ~E_NOTICE
Above it instructs to discard errors fall into notices category. For an example, if you used an undefined variable in an echo() statement, PHP generates a notice. This can be a useful feature in debugging. Think that you defined a variable as $name but mistyped it in the echo() statement as $nmae then PHP interpreter would let you know it. So, make sure you enable notices in your development environment by using just E_ALL as below.
error_reporting = E_ALL
As mentioned above, E_ALL doesn’t include E_STRICT. So, if you want to instruct PHP interpreter to report all possible types of errors then you can set the setting as below.
error_reporting = E_ALL | E_STRICT
From PHP version 6, E_ALL will also include E_STRICT. These constants have corresponding integer values. PHP manual instructs to use those integer values when you set error levels in anything other than php.ini like Apache httpd.conf.
