PHP Debugging Displaying errors


If you want PHP to display runtime errors on the page, you have to enable display_errors, either in the php.ini or using the ini_set function.

You can choose which errors to display, with the error_reporting (or in the ini) function, which accepts E_* constants, combined using bitwise operators.

PHP can display errors in text or HTML format, depending on the html_errors setting.


ini_set("display_errors", true);
ini_set("html_errors", false); // Display errors in plain text
error_reporting(E_ALL & ~E_USER_NOTICE); // Display everything except E_USER_NOTICE

trigger_error("Pointless error"); // E_USER_NOTICE
echo $nonexistentVariable; // E_NOTICE
nonexistentFunction(); // E_ERROR

Plain text output: (HTML format differs between implementations)

Notice: Undefined variable: nonexistentVariable in /path/to/file.php on line 7

Fatal error: Uncaught Error: Call to undefined function nonexistentFunction() in /path/to/file.php:8
Stack trace:
#0 {main}
  thrown in /path/to/file.php on line 8

NOTE: If you have error reporting disabled in php.ini and enable it during runtime, some errors (such as parse errors) won't be displayed, because they occured before the runtime setting was applied.

The common way to handle error_reporting is to enable it fully with E_ALL constant during the development, and to disable publicly displaying it with display_errors on production stage to hide the internals of your scripts.