RubyonRails や Laravelの .env をCodeIgniterにも導入します。
これによって WEBアプリの設定が .env に集約されるので、 .gitignore しておけば余計な情報が リポジトリに上がることはありません。
codeigniter/application 以下にインストールします。
cd codeigniter/application
composer require vlucas/phpdotenv
エディタで下記の行を TRUE に設定します。
$config['composer_autoload'] = TRUE;
エディタで下記の行を TRUE に設定します。
$config['enable_hooks'] = TRUE;
エディタで 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;
}
};
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/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 ファイルが codeigniterの application フォルダに入っている場合は、外から見えることはありません。
別の場所に移動させたい場合は .htaccess を次の内容で作成します。
require valid-user
<Files ~ "^.(htpasswd|htaccess|digest|env)$">
deny from all
</Files>