A PHP application may produce many different levels of errors and warnings when executed. Viewing these errors is critical for developers to troubleshoot an application. However, difficulties are often encountered when trying to display errors from PHP applications, which often fail silently.
Quickest Way to Show All PHP Errors
Adding the following lines to your PHP code is the quickest way to show all PHP errors and warnings:
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
The above functions are directives work as follows:
ini_set()
The ini_set
function tries to override the configuration found in the PHP .ini file.
display_errors
The display_errors
is a directive that determines whether the errors will be shown to the user or remain hidden. This should usually be disabled after development.
display_startup_errors
The display_startup_errors
is also a directive, which is used to find the errors encountered during the PHP startup sequence. This is a separate directive because the display_errors
directive does not handle such errors.
Unfortunately, the display_errors
and display_startup_errors
directives do not show parse errors such as missing semicolons or curly braces. The PHP ini configuration must be modified to achieve this.
error_reporting()
The error_reporting
is a native PHP function that is used to show errors. This function can be used to report all types of errors in the PHP script. For that, the named constant E_ALL
is used as the argument in the function.
Configure PHP.ini to Display All Errors and Warnings
If adding the above functions and directives does not show all errors, the PHP ini configuration has additional directives that can be modified:
display_errors = on
The display_errors
directive can be set to "on
" in the PHP.ini file. This will display all errors including syntax and parse errors that are not displayed by only calling the ini_set
function in the PHP code.
Note that the display_errors
directive must be set to "off
" if the application is in production.
The PHP.ini file can be found in the output of the phpinfo()
function:
#php 7.x
phpinfo();
?>
Loaded Configuration File shows the location of the PHP.ini file.
The PHP error_reporting() function
The error reporting function is a built-in function in PHP that allows developers to specify which and how many errors are shown in the application. This function sets the error_reporting
directive in the PHP ini configuration during runtime.
error_reporting(0);
The value 0 should be passed to the error_reporting
function to remove all errors, warnings, parse messages and notices.
error_reporting(E_NOTICE);
Variables are allowed to be used in PHP even if they are not declared. This is not best practice as undeclared variables cause issues if used in loops and conditions. Undeclared variables are displayed in the web application when E_NOTICE
is passed in the error_reporting
function.
error_reporting(E_ALL & ~E_NOTICE);
The error_reporting
function allows developers to filter which PHP errors can be shown. The “~” character stands for "not" or "no", so the parameter ~E_NOTICE
means not to show notices. The "&" character means "true for all".
error_reporting(E_ALL);
error_reporting(-1);
ini_set('error_reporting', E_ALL);
These 3 lines of code do the same thing - they show all PHP errors. The error_reporting(E_ALL)
is the most widely used since it is more readable.
Show PHP Errors Through .htaccess Configuration
Directory files are usually accessible to developers. The .htaccess file located in the root or public directory of the project can also be used to enable or disable the directive for showing PHP errors.
php_flag display_startup_errors on
php_flag display_errors on
The .htaccess file has directives for display_startup_errors
and display_errors
, similar to what will be added to the PHP code to show errors. Development and production can have different .htaccess files by showing or disabling error messages this way, with production suppressing the displaying of errors.
The display_errors
directive in .htaccess or the PHP.ini file may need to be configured depending on which files are accessible and how deployments and server configurations are done. Many hosting providers will not allow changes to the PHP.ini file to enable display_errors
.
Track, Analyze and Manage PHP Errors With Rollbar
Managing errors and exceptions in your code is challenging. It can make deploying production code an unnerving experience. Being able to track, analyze, and manage errors in real-time can help you to proceed with more confidence. Rollbar automates error monitoring and triaging, making fixing and showing PHP errors easier than ever. Try it today