Codeigniter env
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.
Installation
- 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
Configuration
- 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
Method 1 (Single env)
$hook['pre_system'] = function () {
$dotenv = new Symfony\Component\Dotenv\Dotenv();
$dotenv->load(__DIR__.'/../../.env');
};
Method 2 (Multiple env)
$hook['pre_system'] = function () {
$dotenv = new Symfony\Component\Dotenv\Dotenv();
$dotenv->load(__DIR__.'/../../.env.'.getenv('CI_ENV'));
};
- Create your .env files
Using Method 1(Single env)
$ cp .env.example .env
Define your application environment
CI_ENVvariable in .env only for this method.
Using Method 2 (Multiple env)
Predefined Environments (development, testing, production)
$ cp .env.example .env.development
Use 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>
Usage Example
Database Configuration
- 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,
];