Php 拉维尔环境混乱

Php 拉维尔环境混乱,php,apache,laravel,laravel-5,Php,Apache,Laravel,Laravel 5,好吧,我想我明白了,但似乎我还没有完全理解 我刚刚在本地机器上创建了一个应用程序。我有一个本地.env文件存储我的本地环境变量。我理解,当您使用git将应用程序提交到服务器时,不会推送.env文件,您应该在服务器上设置环境值 我使用的是DigitalOcean,我创建了一个新的虚拟主机文件,并使用SetEnv APP_ENV local语法在其中设置环境变量 当我通过浏览器访问站点时,我知道它正在拾取env值,因为我收到一条错误消息,说找不到基表,并且数据库名称是在我的环境变量中设置的名称。这很

好吧,我想我明白了,但似乎我还没有完全理解

我刚刚在本地机器上创建了一个应用程序。我有一个本地
.env
文件存储我的本地环境变量。我理解,当您使用git将应用程序提交到服务器时,不会推送
.env
文件,您应该在服务器上设置环境值

我使用的是DigitalOcean,我创建了一个新的虚拟主机文件,并使用
SetEnv APP_ENV local
语法在其中设置环境变量

当我通过浏览器访问站点时,我知道它正在拾取env值,因为我收到一条错误消息,说找不到基表,并且数据库名称是在我的环境变量中设置的名称。这很好,因为我还没有运行迁移

但是,当我使用ssh连接到服务器并运行
phpartisan migrate
时,它似乎没有拾取Env值。我认为这是因为artisan没有通过apache虚拟主机运行

这是否意味着我需要创建一个
.env
文件来存储我的数据库详细信息等?如果是这样的话,在虚拟主机文件中设置环境变量,而不仅仅是一个
.env
文件有什么意义?通过在虚拟主机配置文件和
.env
文件中设置值,我复制了环境变量,这肯定是一种不好的做法

如果我不应该为服务器创建另一个
.env
文件,如何指定要在artisan中使用的环境值


我希望我对这个问题解释得足够好,但是如果我没有,或者我需要澄清一些事情,请询问。

对于Laravel将运行的每个环境,您需要一个
.env
文件。完全可以接受在本地使用
.env
,在登台环境中使用不同的
.env
,等等

我不清楚你为什么需要在vhost文件中添加变量。只需为登台创建一个
.env
,并在各自的服务器上为生产环境创建一个
.env
。如果您是从自动化脚本(如puppet或类似脚本)构建,
.env
非常简单,因此很容易从脚本创建


您甚至可以在repo中存储一些名为like
.env.production example
的服务器示例
.env
,这样您就知道服务器应该是什么样子了(显然没有实际存储凭据)

每个运行laravel的环境都需要一个.env文件。为什么要在VHost文件中设置环境值?感谢您为我清理了它,我想我是在阅读了安装文档后才想到它的。
。env
文件没有在生产服务器上使用(其中说明了
,但是,.env文件不应该提交给应用程序的源代码控制
),看到其他人在htaccess文件中放置了环境变量。只要可以放入.env文件,这将是首选的,因为它是最简单的选项。再次感谢:)没问题。是的,医生们对这一点感到有点笨拙。也许还可以看看这个:@Chris,我刚刚删除了我的答案。关于
.env
文件,我和Phil有着相同的想法,特别是考虑到关于环境变量的12个因素。在我看来,在文件中使用敏感设置总是不安全的。@GustavoStraube是的,这可能有点误导,但最终它们确实需要存储在某个地方。看一看我上面评论中的视频(只有5分钟)来自Laracasts的杰夫。希望它能把事情弄清楚。最重要的是,你的密码不应该出现在版本控制中。在这一点上,需要注意的是,
.env
应该位于root之上,因此外部人员不能直接访问它们