Search code examples
phpcodeigniterdeploymentcodeigniter-3

how to load database url database name using .env file in codeigniter version 3.1.6


database.default.hostname = ''
database.default.database = ''
database.default.username = ''
database.default.password = ''
database.default.DBDriver = 'mysqli'

I created a .env file like this and in database.php i call it like below

$db['default'] = array(
  'DSN'      => '',
    'hostname' => env('database.default.hostname'),
    'username' => env('database.default.username'),
    'password' => env('database.default.password'),
    'database' => env('database.default.database'),
    'DBDriver' => env('database.default.DBDriver'),
];

but it gives me internal server error, by hardcoding in database.php it works but i want to load it from .env file

load data from .env file


Solution

  • first install this library by using this command

    composer require vlucas/phpdotenv

    set up environment file

        DB_HOST=localhost
        DB_USERNAME=root
        DB_PASSWORD=password
    

    Add following code line to the on top of the index.php

    
        $dotenv = \Dotenv\Dotenv::createImmutable(FCPATH);
        $dotenv->safeLoad();
    
    

    after that in the database.php change like below

        $host = $_ENV['DB_HOST'];
        $username = $_ENV['DB_USERNAME'];
        $password = $_ENV['DB_PASSWORD'];
    

    note that in codeigniter 4 has built-in support for env files no need install 3rd party libraries