• By default, all errors included in error_reporting are reported in php´s output
• This behavior can – and should – be deactivated on production systems using the display_errors = off php.ini setting
• Errors should still be logged, using the log_errors = on php.ini setting
• The error log is a file set in the error_log php configuration setting. if set to syslog, errors are logged in the system log independent on the operating system used.
• PHP supports several types of errors
o notices at runtime
o errors during parsing (prevents code execution)
o warnings at runtime
o fatal errors at runtime (stop code execution)
o Core errors and warnings
o user-defined notices, warnings, and errors
• php configuration setting error_reporting, or php’s error_reporting() function may be used to define which kinds of errors shall be reported
• Value is an integer, or – much more convenient – a bitmask based on pre-defined constants
o E_NOTICE, E_PARSE, E_WARNING, E_ERROR
o E_CORE_WARNING, E_CORE_ERROR
o E_USER_NOTICE, E_USER_WARNING ,E_USER_ERROR
o E_STRICT(„best practices“ notices)
o E_DEPRECATED (features that might disappear in future php versions)
o E_ALL(everything) o and some more
• Typical production setting: E_ALL & ~E_DEPRECATED & ~E_STRICT
• Since php 7, many errors php reports now throw an error exception, not a fatal error as before.
• Subclasses of error exist for the specific type of error, such as parseerror or typeerror.
• To facilitate backwards compatibility, error is not derived from exception.
• Both error and exception implement the throwable interface