📝
CakePHP5系で環境変数を使えるようにする
はじめに
仕事でCakePHP5系を使っているので、学習内容をまとめていこうかなと思います。今回はデータベースに関する部分を設定する方法を紹介したいと思います。
.envファイルの作成
configフォルダ以下に.env.exampleというファイルがあるので、このファイルをコピーして.envファイルに名前を変更します。変更したら以下のように記述してください。
export DB_DATABASE="データベース名"
export DB_PASSWORD="パスワード"
export DB_USERNAME="ユーザー名"
bootstrap.phpの編集
次にbootstrap.phpの以下の部分のコメントをはずします
if (!env('APP_NAME') && file_exists(CONFIG . '.env')) {
$dotenv = new \josegonzalez\Dotenv\Loader([CONFIG . '.env']);
$dotenv->parse()
->putenv()
->toEnv()
->toServer();
}
if文で環境変数APP_NAMEが設定されていないことと、configフォルダ以下に.envファイルが存在する時に中の処理が行われます。
$dotenv = new \josegonzalez\Dotenv\Loader([CONFIG . '.env']);
ここではjosegonzalez\Dotenv\Loaderクラスのインスタンスを作成しています。このインスタンスには指定されたパスの.envファイルを扱います。
$dotenv->parse()
->putenv()
->toEnv()
->toServer();
parse()で.envファイルを解析して、内容を読み込みます。
putenv()は解析したファイルの環境変数をシステムの環境変数へ設定します。
toEnv()は解析された環境変数をPHPの$_ENVグローバル配列に設定します。
toServer()は解析された環境変数をPHPの$_SERVERに設定します。
app_local.phpの編集
app_local.phpファイルのデータベースに関する情報を以下のように編集します。
'username' => env('DB_USERNAME', 'hoge'),
'password' => env('DB_PASSWORD', 'hoge'),
'database' => env('DB_DATABASE', 'hoge'),
これは環境変数が設定されていない時にはhogeの部分に設定している値がデフォルト値となります。
これでデータベースには接続されます。
おわりに
今回はデータベースの部分の環境変数を設定するのを例にやってみました。実際に手を動かして、文章に書くことをすると定着するのでいいですね。また、学習したことがあれば記事を書いていこうと思います。最後まで読んでいただきありがとうございました。
参考文献
Discussion