LoginSignup
5
2

More than 3 years have passed since last update.

【Laravel】envファイルの値を動的に変更して使用する

Posted at

概要

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()経由で使う
Laravelで.envファイルの変数を動的に変更するにはどうすればよいですか?

5
2
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
5
2