軽量高速なPHPフレームワーク。動作条件がCodeIgniter3ならPHP5.6、CodeIgniter4ならPHP7.3なので少し前のサーバ環境でも問題なく動作します。

PHPフレームワーク CodeIgniterに .env を導入する

RubyonRails や Laravelの .env をCodeIgniterにも導入します。
これによって WEBアプリの設定が .env に集約されるので、 .gitignore しておけば余計な情報が リポジトリに上がることはありません。

● vlucas/phpdotenv のインストール

codeigniter/application 以下にインストールします。

cd codeigniter/application
composer require vlucas/phpdotenv

● config/config.php の composer_autoload を TRUE にする

エディタで下記の行を TRUE に設定します。

$config['composer_autoload'] = TRUE;

● config/config.php の enable_hooks を有効にする

エディタで下記の行を TRUE に設定します。

$config['enable_hooks'] = TRUE;

● codeigniter/config/hooks.php に .env ファイル読み込み部分を追加

エディタで hooks.php の一番下に下記の行を 追記します。

codeigniter/config/hooks.php

$hook['pre_system'] = function() {
    try {
        $dotenv = Dotenv\Dotenv::createImmutable(APPPATH);
      // $dotenv = Dotenv\Dotenv::create(APPPATH);  // こちらは Dotenv の古いバージョンのやり方です
      $dotenv->load();
    } catch (Exception $e) {
      //
    }
    function env($variable, $default = null) {
      $value = getenv($variable);
      return ($value) ? $value : $default;
    }
};

● .env ファイルを用意する

codeigniter/application/.env を新規作成し、以下の内容を適宜書き換えて保存します。

APP_NAME="My-Application"
APP_URL="http://localhost:8000/"

DB_DRIVER="mysqli"
DB_HOST="localhost"
DB_USER="root"
DB_PASS="root"
DB_NAME="ci"

MAIL_DRIVER="smtp"
MAIL_HOST="YOUR.SERVER"
MAIL_PORT=25
MAIL_USERNAME=""
MAIL_PASSWORD=""
MAIL_ENCRYPTION="tls"
MAIL_FROM_ADDRESS="YOUR@ADDRESS"
MAIL_FROM_NAME="YourName"

STRIPE_SECRET_KEY=""
STRIPE_PUBLIC_KEY=""

あとは好きなところから コントローラーから

print_r( env('APP_NAME') );

として使用します。

● データベースの config ファイルから .env を参照する

config/database.php の次の行を

	'hostname' => 'localhost',
	'username' => '',
	'password' => '',
	'database' => '',
	'dbdriver' => 'mysqli',

↓ このように書き換えます

	'hostname' => env('DB_HOST'),
	'username' => env('DB_USER'),
	'password' => env('DB_PASS'),
	'database' => env('DB_NAME'),
	'dbdriver' => env('DB_DRIVER'),

● .env ファイルをブラウザから見えないようにする

.env ファイルが codeigniterの application フォルダに入っている場合は、外から見えることはありません。
別の場所に移動させたい場合は .htaccess を次の内容で作成します。

require valid-user
<Files ~ "^.(htpasswd|htaccess|digest|env)$">
    deny from all
</Files>

引用元 : https://github.com/jagroop/codeigniter-artisan

関連エントリー

No.1197
01/20 14:36

edit

CodeIgniter
composer