Handling Multiple Environments : CodeIgniter User Guide
Author: ExpressionEngine Dev Team
Description: CodeIgniter User Guide

# CodeIgniter User Guide Version 2.2.1

Search User Guide

# Handling Multiple Environments

Developers often desire different system behavior depending on whether an application is running in a development or production environment. For example, verbose error output is something that would be useful while developing an application, but it may also pose a security issue when "live".

## The ENVIRONMENT Constant

By default, CodeIgniter comes with the environment constant set to '`development`'. At the top of index.php, you will see:

`define('ENVIRONMENT', 'development');`

In addition to affecting some basic framework behavior (see the next section), you may use this constant in your own development to differentiate between which environment you are running in.

## Effects On Default Framework Behavior

There are some places in the CodeIgniter system where the `ENVIRONMENT` constant is used. This section describes how default framework behavior is affected.

### Error Reporting

Setting the `ENVIRONMENT` constant to a value of '`development`' will cause all PHP errors to be rendered to the browser when they occur. Conversely, setting the constant to '`production`' will disable all error output. Disabling error reporting in production is a good security practice.

### Configuration Files

Optionally, you can have CodeIgniter load environment-specific configuration files. This may be useful for managing things like differing API keys across multiple environments. This is described in more detail in the environment section of the Config Class documentation.