Normally, when a PHP script encounters an error, it displays a message indicating the cause of the error and may also terminate script execution depending on how serious the error is.
Now, while this behavior is acceptable during the development phase, it cannot continue once a PHP application has been released to actual users. In "live" situations, it is unprofessional to display cryptic error messages (which are usually incomprehensible to non-technical users); it is more professional to intercept these errors and either resolve them (if resolution is possible), or notify the user with an easily-understood error message (if not).
There are three basic types of runtime errors in PHP:
Notices: These are non-critical errors that PHP encounters while executing a script. This can occur for example when accessing a variable that has not yet been defined. By default, such errors are not displayed to the user. You can, however change the default behavior.
Warnings: These are more serious errors. This can occur for example when attempting to include() a file which does not exist. By default, these errors are displayed to the user, but they do not result in script termination.
Fatal errors: These are critical errors. They can occur for example when instantiating an object of a non-existent class, or calling a non-existent function. These errors cause the immediate termination of the script, and PHP's default behavior is to display them to the user when they take place.
It should be noted that a syntax error in a PHP script, e.,g., a missing brace or semi-colon, is treated as a fatal error and results in script termination. If you forget a semi-colon at the end of a PHP statement, PHP will refuse to execute your script until you correct the mistake.
PHP errors can be generated by the PHP engine, by PHP built-in functions, or by user-defined functions. They may occur at startup, at parse-time, at compile-time or at run-time. Internally, these variations are represented by twelve different error types (as of PHP 5).
See http://www.php.net/manual/en/ref.errorfunc.php for more information. Named constants like E_NOTICE and E_USER_ERROR provide a convenient way to reference the different error types.
A quick tip here: most of the time, you'll be worrying about run-time errors (E_NOTICE, E_WARNING and E_ERROR) and user-triggered errors (E_USER_NOTICE, E_USER_WARNING and E_USER_ERROR).
During the debug phase, you can use the shortcut E_ALL type to see all fatal and non-fatal errors generated by your script, and in PHP 5 you might also want to use the new E_STRICT error type to view errors that affect the forward compatibility of your code.