CodeIgniter - Error Handling

Many times, while using application, we come across errors. It is very annoying for the users if the errors are not handled properly. CodeIgniter provides an easy error handling mechanism.

You would like the messages to be displayed, when the application is in developing mode rather than in production mode as the error messages can be solved easily at the developing stage.

The environment of your application can be changed, by changing the line given below from index.php file. This can be set to anything but normally there are three values (development, test, production) used for this purpose.

define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'development');

Different environment will require different levels of error reporting. By default, development mode will display errors and testing and live mode will hide them. CodeIgniter provides three functions as shown below to handle errors.

  • show_error() function displays errors in HTML format at the top of the screen.


show_error($message, $status_code, $heading = 'An Error Was Encountered')


  • $message (mixed) − Error message

  • $status_code (int) − HTTP Response status code

  • $heading (string) − Error page heading

Return Type

  • show_404() function displays error if you are trying to access a page which does not exist.


show_404($page = '', $log_error = TRUE)


  • $page (string) – URI string

  • $log_error (bool) – Whether to log the error

Return Type

  • log_message() function is used to write log messages. This is useful when you want to write custom messages.


log_message($level, $message, $php_error = FALSE)


  • $level (string) − Log level: ‘error’, ‘debug’ or ‘info’

  • $message (string) − Message to log

  • $php_error (bool) − Whether we’re logging a native PHP error message

Return Type


Logging can be enabled in application/config/config.php file. Given below is the screenshot of config.php file, where you can set threshold value.

|   Error Logging Threshold
| You can enable error logging by setting a threshold over zero. The 
| threshold determines what gets logged. Threshold options are:
|   0 = Disable logging, Error logging TURNED OFF
|   1 = Error Message (including PHP errors)
|   2 = Debug Message
|   3 = Informational Messages
|   4 = All Messages
| You can also pass an array with threshold levels to show individual error types
|   array(2) = Debug Message, without Error Messages
| For a live site you'll usually only enable Errors (1) to be logged otherwise 
| your log files will fill up very fast.
$config['log_threshold'] = 0;

You can find the log messages in application/log/. Make sure that this directory is writable before you enable log files.

Various templates for error messages can be found in application/views/errors/cli or application/views/errors/html.