LoginSignup
1
1

More than 5 years have passed since last update.

LARAVELの設定はどこを変更すべきなのか

Last updated at Posted at 2019-06-17

はじめに

LARAVELをインストールしたまではよかったのですが、いざPostgreSQLを使おうとした際にデフォルト設定では接続できないらしい、設定を変更する必要がある、とのこと。
そこで公式ドキュメントを読んでみたところ、どこをいじってよいのかよくわからないので、自分なりに調べてまとめてみました。

設定のある場所

  1. [root]/.env
  2. [root]config/*.php
  3. 'php artisan config:cache' コマンドで作成された設定

[root]/.env について

LARAVELをインストールすると作ってくれる、インストール時の環境に応じた環境設定。
これそのものは何もしない(と思うのだが…。)

[root]/config/*.phpについて

設定ファイル群。キャッシュファイルを作らない限りここから設定を読み込む。

'php artisan config:cache' コマンドで作成された設定 について

上記設定ファイル群から読み込んだ設定をまとめたもの。これを作成するとアプリが早くなるらしい。
そしてこの設定キャッシュファイルの存在が確認できた場合には、/.envファイルは読み込まれなくなる。

それぞれの関係について

[root]/config/*.php を開いてみると、ところどころで'env()'関数を使っている。ではこの関数はなんぞやというと、
env([ パラメータ1 ],[ パラメータ2 ]);
パラメータ1の環境設定値を返す。
パラメータ1の環境設定値がない場合には、パラメータ2の値を返す。
パラメータ1のみでパラメータ1の環境設定値がないときにはnullを返す。

つまり、

/.env
HOGE=hogehoge

のとき、

/config/fuga.php
'fuga' => env('HOGE');

fuga = 'hogehoge' となる。また、

/config/fuga.php
'fuga' => env('PIYO');

であれば、PIYOという値の設定はないので、
fuga = null となるし、

/config/fuga.php
'fuga' => env('PIYO','piyopiyo');

であれば
fuga = 'piyopiyo' となる。

つまりなんなんだよ

結論としては、
1. /config/*.php の内容を確認する
2. 環境設定でいじれるものは/.envでいじる
3. env()関数を使ってなさそうなものは/config/*php を直接編集する(カスタムのconfigファイルを作る方法もあるらしいですが、ここでは触れません。)
4. いよいよ設定も固まってきたぞといったところで 'php artisan config:cache' で設定キャッシュファイルを作成する。これによって設定は固定化され、/.envに依存する設定はnullとなる。 /.envはロードされなくなり、env()関数は全てnullを返す。

だから公式ドキュメントでは「アプリケーションの開発期間中は設定が頻繁に変更されることも多いので、ローカルでの開発中にこのコマンドを実行してはいけません。」と書かれているのでしょう。

参考

Laravelのデータベース設定(config/database.php)の意味
Laravel 5.8 設定
Laravel の .env の値は config() 経由で使う。
2019-06-26 追記
Laravelヘルパ envメソッド

ありがとうございます。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1