error_reporting

Sets which PHP errors are reported

&reftitle.description; `int` `error_reporting` `int` `level`

The `error_reporting` function sets the error_reporting directive at runtime. PHP has many levels of errors, using this function sets that level for the duration (runtime) of your script. If the optional `level` is not set, `error_reporting` will just return the current error reporting level.

&reftitle.parameters;

`level`

- The new error_reporting level. It takes on either a bitmask, or named constants. Using named constants is strongly encouraged to ensure compatibility for future versions. As error levels are added, the range of integers increases, so older integer-based error levels will not always behave as expected.

  The available error level constants and the actual meanings of these error levels are described in the predefined constants.

&reftitle.returnvalues;

Returns the old error_reporting level or the current level if no `level` parameter is given.

&reftitle.changelog;

&Version; | &Description;
5.4.0 | `E_STRICT` became part of `E_ALL`.
5.3.0 | `E_DEPRECATED` and `E_USER_DEPRECATED` introduced.
5.2.0 | `E_RECOVERABLE_ERROR` introduced.
5.0.0 | `E_STRICT` introduced (not part of `E_ALL`).

&reftitle.examples;

### `error_reporting` examples

    <?php

    // Turn off all error reporting
    error_reporting(0);

    // Report simple running errors
    error_reporting(E_ERROR | E_WARNING | E_PARSE);

    // Reporting E_NOTICE can be good too (to report uninitialized
    // variables or catch variable name misspellings ...)
    error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

    // Report all errors except E_NOTICE
    // This is the default value set in php.ini
    error_reporting(E_ALL ^ E_NOTICE);

    // Report all PHP errors (see changelog)
    error_reporting(E_ALL);

    // Report all PHP errors
    error_reporting(-1);

    // Same as error_reporting(E_ALL);
    ini_set('error_reporting', E_ALL);

    ?>

&reftitle.notes;

Most of `E_STRICT` errors are evaluated at the compile time thus such errors are not reported in the file where error_reporting is enhanced to include `E_STRICT` errors (and vice versa).

Passing in the value `-1` will show every possible error, even when new levels and constants are added in future PHP versions. The `E_ALL` constant also behaves this way as of PHP 5.4.

&reftitle.seealso;

- The display_errors directive
- The html_errors directive
- The xmlrpc_errors directive
- `ini_set`