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

问题描述 投票:2回答:4

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

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

git laravel gitignore
4个回答
15
投票

您的.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复制到.env并更改值。


1
投票

.env文件包含密码和API密钥,出于安全原因,这些密钥和API密钥不应进入源代码管理。此外,他们可能会在不同环境之间进行更改(您应该使用不同的API密钥进行测试与生产

你可以做的是将.env.example.php保存在git中并使用需要配置的变量更新它,但是将值保留为空。然后在新安装上,只需将.env.example.php复制到.env并更新该环境的值。


1
投票

这里的答案和许多文章都说.env包含敏感信息,因此不应该放在源代码管理中。但问题是.env不仅包含敏感信息,还可能包含典型的设置配置。您可以将敏感信息保留在外,并将所有其他设置保留在git中。

有人建议把.env.example放在git中,我实际上已经关注了一段时间,但发现它非常“不方便”,特别是对于新加入团队的人。当他们检查代码时,他们发现代码无法运行,然后他们只是从其他老人那里复制.env(不是来自.env.example并进行必要的更改。)b / c对于dev环境甚至像API这样的敏感信息密钥/数据库密码是共享的。

整个开发团队通常会有一个API密钥和一个数据库设置。我看到这种情况时有发生,这让我怀疑使用.env.example。

所以现在我使用将.env放在git中的做法,并将敏感信息放在.env.local中,这是gitignored。

Ruby dotenv gem建议这个https://github.com/bkeepers/dotenv#what-other-env-files-can-i-use Symfony 4也改为this behavior 当我做nodejs项目时,我也使用名为dotenv-flow的npm包来做到这一点。


0
投票

.gitignore文件中添加的文件列表将被Git丢弃,不会上传/下载到Git存储库

.env放在.gitignore的主要优点。

1).env文件包含有关项目的敏感信息。您的数据库凭据,加密密钥等信息,如果您的应用使用任何API,那么您可以从.env文件中加载API密钥/访问令牌,您可能不希望所有有权访问的人都可以访问这些凭据。项目。

2).env文件包含您可能不希望在生产和开发环境中具有相同的特定设置

例如。在开发环境中你可以保持APP_DEBUG = true在生产方面,建议有APP_DEBUG=false。同样,如果您的应用程序使用任何API(支付网关),那么您将不得不使用适用于生产环境的开发环境和实时凭据的测试API凭据(这将导致实际的在线交易),这可以通过.env文件进行良好管理。

© www.soinside.com 2019 - 2024. All rights reserved.