目次
Laravelの記事一覧は下記
PHPフレームワークLaravelの使い方
Laravelバージョン
動作確認はLaravel Framework 7.19.1で行っています
環境(開発環境と本番環境等)ごとに異なる値
データベースの接続先とかメールの送信元等、開発環境と本番環境で異なる値にしたいことがあります
それを実現するためにわざわざif文を書く必要はありません
前提条件
eclipseでLaravel開発環境を構築する。デバッグでブレークポイントをつけて止める。(WindowsもVagrantもdockerも)
本記事は上記が完了している前提で書かれています
プロジェクトの作成もapacheの設定も上記で行っています
envファイルの作成
(1) envファイル作成
/sample/.envがすでに存在していると思います
/sample/.envをコピーして/sample/.env.localという名前のファイルにします
(2) 値の追記
/sample/.envに下記を追記
SAMPLE_KEY=SAMPLE_VALUE_PRD
/sample/.env.localに下記を追記
SAMPLE_KEY=SAMPLE_VALUE_LOCAL
configファイルの作成
(1) /sample/config/sample.phpを作成
<?php
return [
'sampleKey' => env('SAMPLE_KEY'),
];
env('SAMPLE_KEY')で先ほどenvファイルに追記したSAMPLE_KEYの値が取れます
Controllerにメソッド追加
(1) /sample/app/Http/Controllers/SampleController.phpにsettingメソッドを追記
public function setting()
{
$data = ['key' => config('sample.sampleKey')];
return view('sample.setting', $data);
}
config('sample.sampleKey')で先ほどconfig/sample.phpに書いたsampleKey要素を取得できます
なぜここでenv('SAMPLE_KEY')ではなく、config('sample.sampleKey')で値を取得するのかは後述します
(2) /sample/routes/web.phpに下記を追記
Route::get('sample/setting', 'SampleController@setting');
viewの作成
/sample/resources/views/sample/setting.blade.phpファイル作成
<html>
<head>
<title>sample</title>
</head>
<body>
{{$key}}
</body>
</html>
動作確認
apacheのhttpd.confに下記を追記
もしapacheにmod_envモジュールをインストールしていない方は、mod_envモジュールをインストールしてください
SetEnv APP_ENV local
apache再起動してアクセス
http://localhost/laravelSample/sample/setting
実行結果
SAMPLE_VALUE_LOCAL
先ほど追記したSetEnvをコメントにする
#SetEnv APP_ENV local
apache再起動してアクセス
http://localhost/laravelSample/sample/setting
実行結果
SAMPLE_VALUE_PRD
このようにapacheに設定した環境変数APP_ENVの値が.envファイルの接尾辞となり、
Laravelアプリケーションで読み込まれる.envファイルを変えることができます
configのキャッシュ
(1) コマンドラインで
cd sample
php artisan config:cache
xdebugの設定をしているとeclipseが実行していいですかというプロンプトを出すのでOKを押します
eclipseプロジェクトを右クリック→リフレッシュ
/sample/bootstrap/cache/config.phpが現れます
/sample/config配下のファイルが/sample/bootstrap/cache/config.php一つにまとめられました
Laravelは/sample/bootstrap/cache/config.phpを読むようになります
これによりアプリケーションの処理速度があがります
(2) コマンドラインで
cd sample
php artisan config:clear
xdebugの設定をしているとeclipseが実行していいですかというプロンプトを出すのでOKを押します
eclipseプロジェクトを右クリック→リフレッシュ
/sample/bootstrap/cache/config.phpが消えました
(3) Controllerでconfig関数を使った理由
先ほどControllerでenv('SAMPLE_KEY')ではなく、config('sample.sampleKey')で値を取得しました
その理由は
bootstrap/cache/config.phpをつくると、env関数の呼び出しはすべてnullを返すようになるLaravelの仕様のためです
したがって、.envファイルに記載した値は一度configファイルの配列に設定して、Controller以降ではconfig関数を使用して取得することになります
開発時はphp artisan config:cache
を実行することはないと思います
しかし、本番環境ではphp artisan config:cache
を実行してデプロイすることになると思います