PHP Error Reporting and Logging Configuration

# PHP Error Reporting and Logging Configuration

Last updated:

Error reporting and logging is an important part of application development. It's not always easy to set these up in PHP due to there being a lot of configuration directives that affect the way errors are shown or logged.

These are a few common use cases that come up during an application's life cycle. I've included the relevant php.ini directives.

(specific values, such as the location where I store log files, are only provided as an example.)

### Production setup

You want to log errors, but you don't want users to see them (due to security issues). Example for php.ini:

display_errors = Off
error_reporting = E_ALL & ~E_DEPRECATED
display_startup_errors = Off
log_errors = On
error_log = /tmp/phplog.log


### Development setup

You want to log errors and show them on the screen as well. Example for php.ini:

display_error = On
error_reporting = E_ALL & ~E_DEPRECATED
display_startup_errors = On
log_errors = On
error_log = /tmp/phplog.log


### Notes

• Note that these settings can also be set in .htaccess files or in Apache VHost definition files (using the directive php_value). (Note that php constants have been replaced by integers here). For example (on a VirtualHost definition file):

# dev setup
<VirtualHost *:80>
DocumentRoot /var/www/my-website

php_flag display_startup_errors on
php_flag display_errors on
php_flag html_errors on
php_flag  log_errors on
php_value error_log  /tmp/phplog.log
php_value error_reporting 6135
</VirtualHost>

• error_reporting controls the logs that get logged or shown in the screen. Even if you have enabled logging and error display, nothing will get seen and/or logged if you have incorrect error_reporting settings.