Using environment variables via a .env
file is a common best practice to keep sensitive configuration (like database credentials or any other secret or api keys) out of your codebase. .env
file support is not provided in CodeIgniter 3 out of the box, but you can easily integrate it using the vlucas/phpdotenv
library.
This guide will show you how to add .env
file support in a CodeIgniter 3 application using the vlucas/phpdotenv
library with Composer autoload enabled.
Prerequisites
Ensure your CodeIgniter project has Composer enabled by checking the following in application/config/config.php
:
$config['composer_autoload'] = TRUE;
Step-by-Step Setup
The following are the steps to implement .env
file support.
Step 1. Install vlucas/phpdotenv
via Composer
In Codeigniter 3, composer.json is not available at the project root, but inside the application
directory. So, to install any composer library, you have to first navigate to the application
directory.
cd application/
composer require vlucas/phpdotenv
It will install the core files to add support for .env
files.
Step 2. Create the .env
File
At the root of your project (same level as index.php
), create a file named .env
with database configuration variables as a content:
DB_HOST=localhost
DB_USERNAME=root
DB_PASSWORD=secret
DB_NAME=my_database
3. Load the .env
in index.php
Open your index.php
file and add the following code before the line that bootstraps CodeIgniter:
require_once __DIR__ . '/vendor/autoload.php';
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__);
$dotenv->load();
Add the above code in index.php
file before the following line:
require_once BASEPATH.'core/CodeIgniter.php';
For older versions (PHP < 7.1 or Dotenv v2):
$dotenv = new Dotenv\Dotenv(__DIR__);
$dotenv->load();
This will load the .env
file variables using the phpdotenv library. Now, all the variables used in .env
file can be used in any code of the project.
4. Use Environment Variables in database.php
We defined the database configuration variables inside the .env file. To use these variables, open application/config/database.php
and update the code as follows:
$db['default'] = array(
'hostname' => getenv('DB_HOST'),
'username' => getenv('DB_USERNAME'),
'password' => getenv('DB_PASSWORD'),
'database' => getenv('DB_NAME'),
'dbdriver' => 'mysqli',
'db_debug' => (ENVIRONMENT !== 'production'),
// ... other settings
);
Note: In some cases, getenv
function may not work. Use $_ENV
as an alternative.
Secutiry Tip
Never commit your .env
file to version control. Add it to .gitignore
Conclusion
Now your CodeIgniter 3 app can securely use environment variables just like modern frameworks. This keeps your config clean, safe, and easy to manage across environments.