Webアプリケーションを開発・運用する際、”環境ごとの設定管理”は避けて通れない課題です。特にCodeIgniter3を使っていると、config
やdatabase.php
を環境ごとに書き換えたり、ファイルを分けて管理したりと、正直面倒くさいですよね。
実際、私が.env導入に踏み切ったのは、ローカル・ステージング・本番と複数環境を使い分けるプロジェクトで、ちょっとした設定ミスで本番DBに接続してしまい、ヒヤッとしたことがきっかけでした。
「これはマズイ、何とかしないと…」
Laravelではおなじみの.env
。CI3でも使えたら便利だなと思い、試行錯誤の末、無事導入しました。その方法を、同じ悩みを抱える皆さんと共有したいと思います。
.envファイルとは?
.envファイルは、アプリケーションの設定値を”環境変数”として定義・管理するためのファイルです。データベース接続情報やAPIキー、アプリの動作モードなどを、この1つのファイルで切り替え可能にします。
CI3では標準サポートされていませんが、PHPのvlucas/phpdotenvライブラリを活用すれば、簡単に導入できます。
導入で何が変わるのか?
- 設定ミスが減る
本番・開発で設定を間違えて大惨事…を防げる! - セキュリティ向上
APIキーやDBパスワードをコードに直書きしない。 - メンテナンス楽々
環境追加や設定変更が超簡単。
導入手順
.envファイルを作成
プロジェクトのルートに.env
を作ります
CI_ENV=development
DB_HOST=localhost
DB_USER=root
DB_PASS=secret
DB_NAME=ci_project
.gitignoreに追加
.env
phpdotenvをインストール
composer require vlucas/phpdotenv
index.phpを編集
require __DIR__ . '/../vendor/autoload.php';
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__ . '/../');
$dotenv->load();
設定ファイルでgetenv()を使う
application/config/database.php
などで
'hostname' => getenv('DB_HOST'),
'username' => getenv('DB_USER'),
'password' => getenv('DB_PASS'),
'database' => getenv('DB_NAME'),
導入後の変化と感想
.envを導入してから、環境切り替え時のストレスが一気に減りました。何より、「本番に接続してしまった…!」という冷や汗から解放されたのは大きいです。CI3を使い続けるなら、ぜひ導入をおすすめします!
GitHub - vlucas/phpdotenv: Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.
Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically. - vlucas/phpdotenv
コメント