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

Laravel and environment variables in command line production without .env file

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

.env

DB_HOST=x.x.x.x.x
DB_USERNAME
...

这个文件不是我的 repo 的一部分,当我部署时,我将相同的变量设置到我的系统环境变量中(在这里使用 amazon beanstalk),因此无需 .env 文件.

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

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

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

我一直认为 .env 文件只是设置服务器的一部分。 .env 文件被 git 忽略,所以一旦它被设置,你可以 push/pull 随心所欲,它会单独留下 .env 文件。至少到目前为止我是这样做的。