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之上,因此外部人员不能直接访问它们