Simple env setup for your codeigniter application with single or multiple .env configuration. Configure your application based on your need.
Load environment variables from .env for your application using getenv() or $_ENV.
- Install Composer
$ curl -s http://getcomposer.org/installer | php- copy the
.env.exampleand.htaccessfrom method1 or method2 in repo and paste it to your CodeIgniter root. - Install package on root directory
$ composer require symfony/dotenv- Enable your Composer Autoload and Hooks:
application/config/config.php
$config['enable_hooks'] = FALSE; to $config['enable_hooks'] = TRUE;
$config['composer_autoload'] = FALSE; to $config['composer_autoload'] = 'vendor/autoload.php';
- Add this code to your application hooks:
application/config/hooks.php
$hook['pre_system'] = function () {
$dotenv = new Symfony\Component\Dotenv\Dotenv();
$dotenv->load(__DIR__.'/../../.env');
};$hook['pre_system'] = function () {
$dotenv = new Symfony\Component\Dotenv\Dotenv();
$dotenv->load(__DIR__.'/../../.env.'.getenv('CI_ENV'));
};- Create your .env files
$ cp .env.example .envDefine your application environment
CI_ENVvariable in .env only for this method.
$ cp .env.example .env.developmentUse these environment names only. For additional environments add a switch case in
index.phpLine No. : 66 Set the environment in.htaccessfile. Line No. : 3 & 12. If environment is not set in.htaccessfile the application won't run.
<IfModule mod_env.c>
#Set Environment(development,testing,production)
SetEnv CI_ENV development
</IfModule>
<IfModule mod_rewrite.c>
#if mod_env module not enabled in server
#Set Environment(development,testing,production)
RewriteRule ^ - [E=CI_ENV:development]
</IfModule>- Edit the
application/config/database.php - Replace this code:
$db['default'] = [
'dsn' => '',
'hostname' => 'localhost',
'username' => '',
'password' => '',
'database' => '',
'dbdriver' => 'mysqli',
'dbprefix' => '',
'pconnect' => FALSE,
'db_debug' => (ENVIRONMENT !== 'production'),
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => [],
'save_queries' => TRUE
];to
$db['default'] = [
'dsn' => '',
'hostname' => getenv('DB_HOSTNAME'),
'username' => getenv('DB_USERNAME'),
'password' => getenv('DB_PASSWORD'),
'database' => getenv('DB_DATABASE'),
'dbdriver' => 'mysqli',
'dbprefix' => getenv('DB_PREFIX'),
'pconnect' => false,
'db_debug' => (ENVIRONMENT !== 'production'),
'cache_on' => false,
'cachedir' => '',
'char_set' => getenv('DB_CHAT_SET'),
'dbcollat' => getenv('DB_COLLATION'),
'swap_pre' => '',
'encrypt' => false,
'compress' => false,
'stricton' => false,
'failover' => [],
'save_queries' => true,
];