Laravel 中环境变量的评估
Evaluation of env variable in Laravel
抱歉,问题很简单:
我找不到任何资源来解释 Laravel 中 ENV 变量的评估顺序...通常在 Spring Boot 中,如果我在 docker-compose
中定义一个变量,我知道它覆盖 application.properties
值的事实......在 Laravel?
中是相同的
例如:
.env
DB_HOST = A
docker-compose.yml
environment:
- DB_HOST = B
在应用中,是否保证DB_HOST
是B
?
通常首先 returned 定义在 .env 中的变量。它们也存储在 config/ 文件中。在您的情况下,它存储在 config/database.php 文件中。
在我的例子中 env('DB_HOST', '127.0.0.1')
就是这段代码。
它的意思基本上是您从 .env 上的变量 DB_HOST 中获取存储的值,否则 return 指定的默认值是 127.0.0.1
编辑:如评论中所述,您始终可以使用 dd() 或 return env(DB_HOST); 进行测试;你会得到结果。
撰写本文时 Laravel 使用 this dotenv 环境。其关键行为由行决定:
static::$repository = $builder->immutable()->make();
不可变,如the official dotenv repository所述,意味着现有的环境变量不会被覆盖。因此,作为容器环境一部分的 docker-compose 集的变量不会被 .env 覆盖。
然而,由于这是通过挖掘代码推断出来的,没有明确记录(据我所知),我认为您需要将其视为未记录的行为,如果您依赖于此,请在升级前保持警惕Laravel 个版本,以确保它没有改变。
抱歉,问题很简单:
我找不到任何资源来解释 Laravel 中 ENV 变量的评估顺序...通常在 Spring Boot 中,如果我在 docker-compose
中定义一个变量,我知道它覆盖 application.properties
值的事实......在 Laravel?
例如:
.env
DB_HOST = A
docker-compose.yml
environment:
- DB_HOST = B
在应用中,是否保证DB_HOST
是B
?
通常首先 returned 定义在 .env 中的变量。它们也存储在 config/ 文件中。在您的情况下,它存储在 config/database.php 文件中。
在我的例子中 env('DB_HOST', '127.0.0.1')
就是这段代码。
它的意思基本上是您从 .env 上的变量 DB_HOST 中获取存储的值,否则 return 指定的默认值是 127.0.0.1
编辑:如评论中所述,您始终可以使用 dd() 或 return env(DB_HOST); 进行测试;你会得到结果。
撰写本文时 Laravel 使用 this dotenv 环境。其关键行为由行决定:
static::$repository = $builder->immutable()->make();
不可变,如the official dotenv repository所述,意味着现有的环境变量不会被覆盖。因此,作为容器环境一部分的 docker-compose 集的变量不会被 .env 覆盖。
然而,由于这是通过挖掘代码推断出来的,没有明确记录(据我所知),我认为您需要将其视为未记录的行为,如果您依赖于此,请在升级前保持警惕Laravel 个版本,以确保它没有改变。