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_HOSTB

通常首先 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 个版本,以确保它没有改变。