没有 .env 文件的命令行生产中的 Laravel 和环境变量

use*_*986 5 amazon-web-services amazon-elastic-beanstalk laravel-5 phpdotenv

当我升级到 Laravel 5 时,我开始使用 env 系统,在根目录下的文件中设置所有配置。

.env

DB_HOST=x.x.x.x.x
DB_USERNAME
...
Run Code Online (Sandbox Code Playgroud)

该文件不是我的存储库的一部分,当我部署时,我将相同的变量设置到我的系统环境变量中(此处使用 amazon beanstalk),因此无需 .env 文件即可访问它们

这样一切都可以工作,但是现在当我在生产中的脚本中使用命令行时,这些系统环境变量似乎无法在命令行中访问。然而,当 PHP 通过 Web 服务器提供服务时,它们是可以访问的。

我发现如果我复制添加回这个 .env 文件,那么它可以在命令行中工作,但这就是我感到困惑的原因,我认为这个系统是为了防止将敏感信息提交到存储库,现在看来我必须这样做,这样我可以在生产中使用 php artisan migrate 和其他命令。

我错过了什么吗?有没有办法在命令行中获取可用的系统环境变量,或者我是否必须以某种方式在生产中动态创建该 .env 文件?

Bak*_*ems 1

我一直认为 .env 文件只是设置服务器的一部分。.env 文件会被 git 忽略,因此一旦设置完毕,您就可以随心所欲地推送/拉取,而不会影响 .env 文件。至少到目前为止我就是这样做的。

  • 当我在服务器上部署系统时,我的步骤之一是在生产环境中运行 php artisan migrate。这是一个问题,因为我的 config/database.php 使用这种格式的 env('DB_HOST') ,并且在生产中通过命令行运行时该值为 NULL。我确实在我的系统环境中设置了这些,以便它们在通过 php Web 服务器运行时可以工作,但这并不能解决我的问题。 (2认同)