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 use
the value provided in "$_SERVER['CI_ENV']", otherwise defaults to
‘development’. At the top of index.php, you will see:

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

This server variable can be set in your .htaccess file, or Apache
config using SetEnv. Alternative methods are available for nginx and
other servers, or you can remove this logic entirely and set the
constant based on the server’s IP address.

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.
