在请求期间,流明不会从系统读取env

时间:2017-05-22 16:51:01

标签: laravel ubuntu docker environment-variables lumen

Lumen 5.4,MySql&泊坞窗。我在全局env

中有以下变量
$ printenv
DB_HOST=127.0.0.1
DB_DATABASE=database
etc
我的项目中的

.env也存在,但它们具有不同的值。

如果我输入修补程序env('DB_HOST'),它会从全局环境中输出值,但是当应用程序运行时,它将从指定的.env文件中获取。我认为问题存在于Laravel\Lumen\Application中的以下函数中:

/**
 * Load a configuration file into the application.
 *
 * @param  string  $name
 * @return void
 */
public function configure($name)
{
    if (isset($this->loadedConfigurations[$name])) {
        return;
    }

    $this->loadedConfigurations[$name] = true;

    $path = $this->getConfigurationPath($name);

    if ($path) {
        $this->make('config')->set($name, require $path);
    }
}

如何覆盖这些值或使其避免这些条件:isset($this->loadedConfigurations[$name])

1 个答案:

答案 0 :(得分:0)

我仍然认为,就我的评论而言,答案仍然是一样的。如果您希望使用docker环境变量而不是本地.env变量,那么config目录仍然是可行的方法。在这种情况下,您似乎希望定位database host。所以,让我们这样做:

config/database.php文件中,更改以下内容:

'mysql' => [
    //...
    'host' => getenv('DB_HOST') ?: env('DB_HOST', 'defaultvalue')
] 

然后只通过配置文件引用主机。

config("database.mysql.host");

如果存在ENV,您将从docker容器中获取ENV,否则您将从DB_HOST文件中获得.env声明。