質問: 環境 ・herokuでMySQL(clearDB)を使用 ・Laravel5.4 ・ローカルにcomposer,MySQL等環境を用意し、開発後にherokuへPush わからないこと 1).envに書き込むDB_HOSTといったDBへの接続情報等は、ローカルのものを指しているのかclearDBを指しているのか。 2).envはHerokuへアップしていないのにHerokuはどのような情報を以ってClearDBに接続しているのか。 以上、恐縮ですがご教示頂ければと思います。
回答: 幾つか勘違いをしているような気がします。 まず、DATABASE_URL等のデータベースの設定は一般的に **サーバの環境変数** にて行います。 このサーバの環境変数を設定する方法は大きく2つあり、 1. Webページのdashboard→アプリ名→settingsにある 「Reveal Config Vals」より環境変数を設定する 2. cli tool を使用して `heroku config:set ENV_KEY=env_value` のようにして環境変数を設定する となります。 > > その他にも、**Add-on**を追加した際に、自動的に追加される環境変数もあります。 > > > これらの方法はいずれも**.env**ファイルは使用はしておりません。(つまり、DBへの接続情報の設定には**.env**ファイルは使わないのです。) 次に、それでは**.env** は何の為にあるのかという話ですが、 heroku のcli tool には、ローカル環境でアプリケーションの動作を確認するための `heroku local` というコマンドが存在します。 この`heroku local`コマンドを実行する際に**自動的に読み込まれる**ファイルが**.env**です。 つまり、『.envファイルにサーバに登録した環境変数と同じ値を書いておけば、ローカル環境でのテストでもその環境変数を使うことが出来るよ。』というだけの話です。 > > この機能を使うことで、ローカルテストから本番と同じDBに接続をすることが出来ます。 > > >