欢迎各位兄弟 发布技术文章
这里的技术是共享的
由NFAUCHELLE 发表于2年前
使用Laravel 5,看起来配置系统已经再次改变为使用.env文件(而不是.env.local.php等与4.2)。
我现在想知道我如何实际配置我的应用程序...新的.env文件似乎使用https://github.com/vlucas/phpdotenv,它指出“phpdotenv是为开发环境而制定的,一般不应该使用在生产中,应该设置实际的环境变量,以便在每个请求上加载.env文件没有开销。
那么数据库的细节应该存在哪里呢?
您仍然可以使用.env文件 - 开销并不重要。
或者在您的服务器上设置环境变量,例如在Apache上,您可以使用.htaccess文件上的SetEnv(http://httpd.apache.org/docs/current/mod/mod_env.html#setenv),还有一个nginx的等效项。
现在我怎么把它们拿出来呢?
我的意思是,在我的/config/database.php我在做
'database' => getenv('DB_NAME')
要么
'database' => $_ENV['DB_NAME']
要么
'database' => Config::get('DB_NAME')
...!
现在不可能设置一个配置进行测试,像在4.2你可以做的.env.testing.php它有特殊的东西为我的机器与团队中的其他人测试略有不同?
是的,我不明白为什么这是改变,或者如果它可能更多...
现在所有的检查一个文件,您可以在文件中设置APP_ENV https://github.com/laravel/laravel/blob/develop/bootstrap/environment.php
如果您想要这样做,这可能会有帮助,因此您可以像以前一样拥有多个文件(.local.env,.testing.env)http://stackoverflow.com/questions/26346299/whats-the-correct-way-to -set-ENV变量功能于laravel-5
您不应该将.env文件添加到生产服务器上,而是在托管配置中创建这些环境变量!这里是如何处理这个https://laracasts.com/series/server-management-with-forge/episodes/5
只是玩这个。如在注释中提到的,但没有在该问题@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文件。
很好的选择是的,有一种方法可以再次获得不同的.env文件,我把它发布在另一个线程的某个地方。
让我对ENV变量感到厌烦的一件事是,它们可以在任何可能生成的Whoops页面中显示,而配置文件不是。
我意识到,在一个完美的世界中,人们总是会确保应用程序在面向公众的网站被视为“生产”,但我担心我(或任何人)可能会忘记,特别是在他们第一次部署时。
@Morgon 同意,所以我做了(感觉有点mixmash),在我的app / config / local / database.php我使用env系统。
但是在生产中我设置了app / config / production / database.php - 这将使设置不受任何系统/环境转储的影响。
生产文件夹是git忽略,所以没有人可以提交任何东西在那里错误....也许应该只是回到使用/ config /文件夹所有的东西.....