CodeIgniter

CodeIgniter3でも.envが使える!煩雑な環境設定をスッキリ管理する方法

この記事は約3分で読めます。
スポンサーリンク

Webアプリケーションを開発・運用する際、”環境ごとの設定管理”は避けて通れない課題です。特にCodeIgniter3を使っていると、configdatabase.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
スポンサーリンク
CodeIgniter
フォローしてね
スポンサーリンク

コメント

タイトルとURLをコピーしました