#概要
Laravelの.envファイルに何かしらの環境変数の保存場所を作り、動的に変更する方法をメモします。webアプリ内で共通の値を扱う場合などに有用です。
#解決方法
「Laravel env 変更」とかでググると出てくるこちらの記事を参考に、コントローラーに記述するだけで変更できます。
まず、webアプリの.envファイルを開いて適当な環境変数を追加してみます。
APP_NAME=Laravel
APP_ENV=local
APP_KEY=
APP_DEBUG=true
APP_URL=http://localhost
// 省略
TEST=0 // 追加
このままでも使う事が出来ますが、本番環境でも使うならconfig() 経由で使う必要があるので、config/app.php辺りに記述します。app.phpに限らず、config下の他のファイルに記述する事も可能です。
<?php
return [
'TEST' => env('TEST'),
// 省略
その後、変更を行いたい部分で以下のようなコードを記述します。
// envファイルを書き換える
$path = base_path('.env');
if (file_exists($path)) {
file_put_contents($path, str_replace(
'TEST=' . config('app.TEST'),
'TEST=' . //ここに変更したい値を記述,
file_get_contents($path)
));
}
file_existsでenvファイルの存在を確認し、file_put_contentsでファイルに値を書き込んでいます。
値はconfig()で扱う事が可能です。
config('app.TEST')
これで値を自由に使う事ができます。
簡単に変えられると思いきや、意外と力技でした。
##参考
[Laravelの.envの値はconfig()経由で使う]
(https://hiroto-k.hatenablog.com/entry/2018/03/28/213000)
Laravelで.envファイルの変数を動的に変更するにはどうすればよいですか?