欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

新的env文件 - 如何配置你的环境 The new env files - how to configure your environments

新的env文件 - 如何配置你的环境

NFAUCHELLE 发表于2年前

使用Laravel 5,看起来配置系统已经再次改变为使用.env文件(而不是.env.local.php等与4.2)。

我现在想知道我如何实际配置我的应用程序...新的.env文件似乎使用https://github.com/vlucas/phpdotenv,它指出“phpdotenv是为开发环境而制定的,一般不应该使用在生产中,应该设置实际的环境变量,以便在每个请求上加载.env文件没有开销。

那么数据库的细节应该存在哪里呢?

最佳答案(由nfauchelle选定)
巴希

$ _ENV []和getenv()是一样的,我自己使用getenv()。如果你问你是否像以前那样使用它们,是的,你做。

只有文件已更改。确保这样做,而不是一个PHP数组

DB_HOST=localhost
DB_USERNAME=myapp
DB_PASSWORD=5q7wGwY0P5
sidscorner
sidscorner
2年前(11,475 XP)

您仍然可以使用.env文件 - 开销并不重要。

或者在您的服务器上设置环境变量,例如在Apache上,您可以使用.htaccess文件上的SetEnv(http://httpd.apache.org/docs/current/mod/mod_env.html#setenv),还有一个nginx的等效项。

 
nfauchelle
nfauchelle
2年前(21,415 XP)

现在我怎么把它们拿出来呢?

 
巴希
 巴希
2年前(1,051,930 XP)

什么意思是“让他们出来”?您可以使用.env设置本地的dev vars。一旦您在生产服务器上,您可以使用您的软件进行设置。根据您使用的网络服务器,在Google上快速搜索应返回许多指南。

 
nfauchelle
nfauchelle
2年前(21,415 XP)

@bashy

我的意思是,在我的/config/database.php我在做

'database' => getenv('DB_NAME')

要么

'database' => $_ENV['DB_NAME']

要么

'database' => Config::get('DB_NAME')

...!

 
巴希
 巴希
2年前(1,051,930 XP)

$ _ENV []和getenv()是一样的,我自己使用getenv()。如果你问你是否像以前那样使用它们,是的,你做。

只有文件已更改。确保这样做,而不是一个PHP数组

DB_HOST=localhost
DB_USERNAME=myapp
DB_PASSWORD=5q7wGwY0P5
 
nfauchelle
nfauchelle
2年前(21,415 XP)

现在不可能设置一个配置进行测试,像在4.2你可以做的.env.testing.php它有特殊的东西为我的机器与团队中的其他人测试略有不同?

 
巴希
 巴希
2年前(1,051,930 XP)

是的,我不明白为什么这是改变,或者如果它可能更多...

现在所有的检查一个文件,您可以在文件中设置APP_ENV https://github.com/laravel/laravel/blob/develop/bootstrap/environment.php

 
jrean
 jrean
2年前(28,765 XP)

我有一个本地的.env文件,当然没有被git跟踪(我们所有人都使用L5)。对于测试服务器,您可以创建一个专用的.env文件。生产和其他环境也是一样的。你可能有。

另一个选择是使用Laravel Forge,以简单的方式创建任何环境。你可能需要的vars

我觉得这个新的考虑非常友好和容易。

 
巴希
 巴希
2年前(1,051,930 XP)

如果您想要这样做,这可能会有帮助,因此您可以像以前一样拥有多个文件(.local.env,.testing.env)http://stackoverflow.com/questions/26346299/whats-the-correct-way-to -set-ENV变量功能于laravel-5

 
dberry
 dberry
2年前(36,175 XP)

我想我不明白创建.env.local或.env.test ....他们被git忽略,不包括在你的源代码中,所以你必须去那里,并在你的服务器上创建文件,所以为什么通过额外的步骤,以便您可以拥有.env.whatever环境?

如果它在你的测试服务器上,那么你知道这是为了你的测试环境吗?

 
unitedworx
 unitedworx
2年前(31,410 XP)

您不应该将.env文件添加到生产服务器上,而是在托管配置中创建这些环境变量!这里是如何处理这个https://laracasts.com/series/server-management-with-forge/episodes/5

 
巴希
 巴希
2年前(1,051,930 XP)

这适用于不同的LOCAL环境,本地/测试等。有些人有不同的数据库,并且曾经有多个env文件来处理。

 
keyur
keyur
2年前(5,790 XP)

我和@bashy有同样的问题好奇知道人们会如何处理它。

 
isimmons
isimmons
2年前(17,200 XP)

只是玩这个。如在注释中提到的,但没有在该问题@bashy链接的答案中显示,您可以在一个.env文件中使用不同的env变量,然后在不同的配置文件中使用getenv。

APP_ENV=local
APP_KEY=ehoxkyy3CdMtQmlAva4gIwn4PYsAjzmk

LOCAL_DB_HOST=localhost
LOCAL_DB_NAME=larabook
LOCAL_DB_USERNAME=homestead
LOCAL_DB_PASSWORD=secret

TESTING_DB_HOST=localhost
TESTING_DB_NAME=larabook_testing
TESTING_DB_USERNAME=homestead
TESTING_DB_PASSWORD=secret

我确实发现它是一个痛苦的***不能只是有不同的env文件。

 
巴希
 巴希
2年前(1,051,930 XP)

很好的选择是的,有一种方法可以再次获得不同的.env文件,我把它发布在另一个线程的某个地方。
 

让我对ENV变量感到厌烦的一件事是,它们可以在任何可能生成的Whoops页面中显示,而配置文件不是。

我意识到,在一个完美的世界中,人们总是会确保应用程序在面向公众的网站被视为“生产”,但我担心我(或任何人)可能会忘记,特别是在他们第一次部署时。

 
巴希
 巴希
2年前(1,051,930 XP)

如果有人发现链接或显示phpinfo()的方法,那么也可以得到它。

在生产模式下使用调试非常困难,除非您在正常的app.php中更改它

 
nfauchelle
nfauchelle
2年前(21,415 XP)

@Morgon 同意,所以我做了(感觉有点mixmash),在我的app / config / local / database.php我使用env系统。

但是在生产中我设置了app / config / production / database.php - 这将使设置不受任何系统/环境转储的影响。

生产文件夹是git忽略,所以没有人可以提交任何东西在那里错误....也许应该只是回到使用/ config /文件夹所有的东西.....

 
larapetit
larapetit
1年前(8,850 XP)

我的应用程序在AWS Opsworks Autoscale下工作,并且要求所有站点代码都在备份中。所以一个.env文件将无法正常工作。我如何提交开发和生产的设置,并让Laravel感受到它所处的环境?旧的方法对于这一点很好,但是看不到如何在5.x中这样做

 

 

来自  

普通分类: