※初学者の初投稿です!
初めて感じた、本番と開発環境で環境変数を変えたい!という気持ち。
初めてのレンタルサーバーでの本番環境構築
LaravelとReact(vite使用)2つの別プロジェクトを乗せようとしたときそう思った。
そう思えるようになった自分の成長を感じながら、
なんかいい感じに設定して自動で切り替わるようにしたろ!
そう思ってさんざんハマった挙げ句、そもそもこれが間違いであることに気づいた話。
2つの相違点についての投稿があまりなかったので、自分のためにもまとめておきます。
(基本中の基本過ぎて投稿がないのかもしれない)
(でもセンキュー謎ブログとかワイも言われてみたい。)
(他の記事やサイトと重複してるとか、間違ってるとかあったら教えてください!すぐ消します)
そもそも本番と開発は.envファイルを別々に設定するのが一般的である
当たり前ですね汗
Laravelにおける環境は.env内のAPP_ENVに指定しますがここの値は、
production
local
testing
のどれかと決まっているようです。
引用:https://teratail.com/questions/l9i2i08pzhw12p
つまり以下の環境変数ファイルが追加で使えます。(使用自体推奨されていませんが)
.env.local (※viteの場合、開発環境はdevelopmentなので、.env.developmentですね)
.env.production
.env.testing
そしてこれらのファイルが存在する場合、
Laravelの場合は.envファイルは読み込まれません!!
Laravelの場合と言ったな・・・そう・・・
察しのいいエンジニアは嫌いじゃないよ。
Viteの場合はこれらのファイルが存在しても.envも読み込まれます!!
同じ環境変数があった場合.env.developmentとかの定義が優先される仕組みなんですね。
あと注意としてViteは.env.developmentなどの環境変数は頭にVITE_とつけないと認識してくれません。
絶対常識だがハマったので。
補足(疲れたので以下適当で勘弁して下さいって言ってみたかった)
Laravelでどうしても自動で環境変数を切り替えたい場合はconfigフォルダ内のphpファイルで設定するようです。
やり方はググったら出てきます。
viteでどうしてもの場合は.env.developmentなどを使いこちらだけgithubにpush、デプロイ先でpullしても良いが、publicリポジトリの場合パスワードなどが混入しないように注意。
(初学者の仲間のために一応解説しておくが、.gitignoreというファイルに書かれているファイルはgithubに共有されない。.envもその1つ。なぜならデータベースのパスワードとか入ってたりするから。おわり。)
ちなみに以下が件のサイト(ばちばち作成中)である。
いつかポートフォリオにするつもりなので暖かく見守ってほしい。
https://discuss-front.vercel.app/