LoginSignup
4
6

More than 5 years have passed since last update.

CodeIgniter3にvlucas/phpdotenvをインストールする方法

Last updated at Posted at 2015-12-24

概説

導入経緯

  • DBの接続情報などcredentialな内容をGitHub上にコミットしている状態が気持ち悪かった。(プライベートリポジトリなんだけど)
  • Webサーバーの環境変数でもよかったのだけど、CLI経由でDB接続している処理があり、.envに設定をまとめたかった。
  • Laravelでは標準でバンドルされているのでなんだか悔しかった。

準備

  • composer.jsonに "vlucas/phpdotenv": "2.0.1" を追記します。(※ここではcomposerの使い方については言及しません)
composer.json
"require": {
  "codeigniter/framework": "3.0rc",
  
  
  省略
  
  
  "vlucas/phpdotenv": "2.0.1"
},
  • 次に.envファイルを準備します。今回は、CodeIgniterのアプリケーションディレクトリ配下に以下のようなDB接続情報を記載したものを準備しました。
.env
DB_HOST="localhost"                                                                                         
DB_NAME="db_name"
DB_USER="db_user"
DB_PASS="db_pass"
  • 利用するたびに $dotenv->load(); を呼ぶのは面倒なので、今回は core/MY_Controller.php の__constructに以下のような感じで追記しました。(もっと良いやり方があれば教えて下さい)
  • 上記のとおり、.envファイルをアプリケーションディレクトリの直下に配置したので、 Dotenv\Dotenv の引数に APPPATH を渡しています。
core/MY_Controller.php
<?php
class MY_Controller extends CI_Controller
{
    public function __construct()
    {
        parent::__construct();
        $this->dotenv = new Dotenv\Dotenv(APPPATH);
        $this->dotenv->load();
    }

使い方

  • 準備が整ったら、後は getenv('DB_HOST') のように呼び出すだけです。以下は config/database.php での使用例。
config/database.php
$db['default'] = array(
    'dsn'   => '',
    'hostname' => getenv('DB_HOST'),
    'username' => getenv('DB_USER'),
    'password' => getenv('DB_PASS'),
    'database' => getenv('DB_NAME'),
    
    
    省略
    
    
);

既にGitHubにcredentialな内容をコミットしちゃってる場合は?

4
6
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
6