Laravel的官方网站建议我们将.env放入gitignore等等。
为什么呢?一旦忘记了如何设置配置,我觉得将来使用非常方便。
答案 0 :(得分:14)
您的<div class="grid">
<div class="a">A</div>
<div class="b">B</div>
<div class="c">C</div>
<div class="d">D</div>
</div>
文件包含非常敏感信息(至少是您的应用密钥)。您在版本控制中不希望这样,每个人都可以看到此信息,并可能使用它来攻击您的网站。
考虑可能存储在那里的数据库信息或电子邮件密钥或密码。此外,您在.env
文件中使用的信息可能也需要在不同环境之间进行更改,因此您无论如何都需要更改值。
你应该做什么呢?
在此文件中创建一个文件.env
,您可以放置.env.example
的所有密钥
离。
.env
在这里,您可以看到一个文件,其中所有想要使用您的代码的人的所有必要信息都可用,但没有敏感信息。然后有人可以将此APP_ENV=local
APP_DEBUG=true
APP_KEY=SomeRandomString
APP_URL=http://localhost
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
复制到.env.example
并更改值。
答案 1 :(得分:1)
.env
文件包含密码和API密钥,出于安全原因,这些密钥和API密钥不应进入源代码管理。另外,它们可能会在不同环境之间发生变化(您应该使用不同的API密钥进行测试与生产)
您可以做的是将.env.example.php
保留在git中并使用需要配置的变量更新它,但将值保留为空。然后在新安装时,只需将.env.example.php
复制到.env
并更新该环境的值。
答案 2 :(得分:0)
Git将丢弃.gitignore
文件中添加的文件列表,不会上传/下载到Git存储库
将.env
放入.gitignore
。
1).env
文件包含有关项目的敏感信息。您的数据库凭据,加密密钥等信息,如果您的应用使用任何API,那么您可以从.env
文件加载API密钥/访问令牌,您可能不希望所有人都可以访问这些凭据。可以访问该项目。
2).env
文件包含您可能不希望在生产和开发环境中具有相同的特定设置
EG。在开发环境中,您可以将APP_DEBUG = true
保留在生产位置,建议您APP_DEBUG=false
。同样,如果您的应用使用任何API(支付网关),那么您必须使用适用于生产环境的开发环境和实时凭据的测试API凭据(这将导致实际的在线交易),可以通过.env
很好地管理文件。
答案 3 :(得分:0)
这里的答案和许多文章都说.env包含敏感信息,因此不应将其置于源代码控制中。但问题是.env不仅包含敏感信息,还可能包含典型的设置配置。您可以只保留敏感信息,并将所有其他设置保留在git中。
有人建议将.env.example放到git中,我实际上遵循了一段时间,但发现它“非常不便”,特别是对于刚加入团队的人。当他们签出代码时,他们发现代码无法运行,然后他们只是从其他老家伙那里复制了.env(从.env.example中不是,并进行了必要的更改。)b / c for dev环境中,甚至敏感信息(如API密钥/数据库密码)也可以共享。
整个开发团队经常会有一个API密钥和一个DB设置。我看到这不时发生,这让我怀疑.env.example的使用。
因此,现在我使用将.env放入git并将敏感信息放入gitignored的.env.local的实践。
Ruby dotenv gem建议使用此https://github.com/bkeepers/dotenv#what-other-env-files-can-i-use
Symfony 4也已更改为this behavior
当我执行nodejs项目时,我还使用了一个名为dotenv-flow的npm软件包。