为什么人们将.env放入gitignore?

时间:2017-04-27 17:40:52

标签: git laravel gitignore

Laravel的官方网站建议我们将.env放入gitignore等等。

为什么呢?一旦忘记了如何设置配置,我觉得将来使用非常方便。

4 个答案:

答案 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软件包。