📝

CakePHP5系で環境変数を使えるようにする

2024/07/18に公開

はじめに

仕事で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の部分に設定している値がデフォルト値となります。
これでデータベースには接続されます。

おわりに

今回はデータベースの部分の環境変数を設定するのを例にやってみました。実際に手を動かして、文章に書くことをすると定着するのでいいですね。また、学習したことがあれば記事を書いていこうと思います。最後まで読んでいただきありがとうございました。

参考文献

https://book.cakephp.org/5/ja/development/configuration.html
https://github.com/josegonzalez/php-dotenv

Discussion