It is possible to trigger an error in PHP. This can be useful for debugging purposes, or if there is some condition which occurs in your PHP script which requires a PHP notice, warning or full error which causes the script to halt execution, and which would not be generated by PHP itself.
The function for doing this is trigger_error()
, and it is passed the error message to be displayed and, optionally, the error type. For example:
trigger_error('No database connection');
The above example would issue the default error type (E_USER_NOTICE) and display the following error message. I have made the message we passed to the trigger error function in bold in the example, but it would normally just appear as unbolded plain text.
Notice: No database connection in /path/to/script.php on line 33
There are three different error levels or error types that can be passed to the trigger_error() function and these are as follows:
- E_USER_ERROR – this is the equivalent of E_ERROR and indicates an error that can not be recovered from. Execution of the script is halted at this point.
- E_USER_WARNING – this is the equivalent of E_WARNING and issues a warning message. Execution of the script is not halted.
- E_USER_NOTICE – this is the equivalent of E_NOTICE and issues a notice message. Execution of the script is not halted.
If we called trigger_error() passing in E_USER_WARNING, the result would look like this, and the script would continue running:
trigger_error('No database connection', E_USER_WARNING);
Warning: No database connection in /path/to/script.php on line 33
If we called trigger_error() passing in E_USER_ERROR, the result would look like this, and the script would stop running at this point:
trigger_error('No database connection', E_USER_ERROR);
Fatal error: No database connection in /path/to/script.php on line 33
In later posts I’ll look at combining the user of trigger_error() with PHP’s custom error handling function set_error_handler(). Read the PHP trigger_error() manual page for more details about the use of trigger_error()