为什么人们将 .env 放入 gitignore?
Why do people put the .env into gitignore?
Laravel的官方网站建议我们将.env 放入gitignore 等。
为什么?一旦您忘记了如何设置配置,我觉得它对以后的使用非常方便。
您的 .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
在这里您可以看到一个文件,其中提供了想要使用您的代码的人的所有必要信息,但 none 敏感信息。然后有人可以将此 .env.example
复制到 .env
并更改值。
.env
文件包含出于安全原因不应进入源代码管理的密码和 API 密钥。此外,它们可能会在环境之间发生变化(您应该使用不同的 API 密钥进行测试与生产)
你可以做的是将.env.example.php
保留在[=20=]中并用需要配置的变量保持更新,但将值留空。然后在新安装时只需将 .env.example.php
复制到 .env
并更新该环境的值。
.gitignore
文件中添加的文件列表将被 Git 丢弃,不会被 uploaded/downloaded to/from Git 存储库
将 .env
放在 .gitignore
中的主要优点。
1) .env
文件包含有关项目的敏感信息。诸如您的数据库凭据、您的加密密钥之类的信息,如果您的应用程序正在使用任何 API,那么您可以从 .env
文件中加载 API Keys/Access 令牌,您可能不希望有权访问该项目的每个人都可以访问这些凭据。
2) .env
文件包含您可能不想在生产和开发环境中使用的特定设置
例如。在开发环境中,您可以保留 APP_DEBUG = true
,而在生产环境中,建议保留 APP_DEBUG=false
。同样,如果您的应用程序使用任何 API(支付网关),那么您将必须对开发环境使用测试 API 凭据,对生产环境使用实时凭据(这将导致实际在线交易),这可以是通过 .env
文件管理得很好。
这里的答案和很多文章都说 .env 包含敏感信息,所以不应该放在源代码管理中。但问题是 .env 不仅包含敏感信息,它还可能包含典型的设置配置。您可以只留下敏感信息,而将所有其他设置保留在 git 中。
有人建议把.env.example放在git里,其实我也跟着看了一段时间,觉得很“不方便”,尤其是对于新入队的小伙伴。当他们查看代码时,他们发现代码不能运行,然后他们只是从其他老家伙那里复制.env(而不是从.env.example并制作必要的更改。) b/c 对于开发环境,甚至共享 API key/DB 密码等敏感信息。
整个开发团队通常会有一个 API 密钥和一个数据库设置。我看到这种情况时有发生,这让我怀疑 .env.example 的使用。
所以现在我采用的做法是将.env 放在git 中,将敏感信息放在.env.local 中git 忽略。
Ruby dotenv gem 建议这个 https://github.com/bkeepers/dotenv#what-other-env-files-can-i-use
Symfony 4 也更改为 this behavior
当我做 nodejs 项目时,我也使用一个名为 dotenv-flow 的 npm 包来做。
Laravel的官方网站建议我们将.env 放入gitignore 等。
为什么?一旦您忘记了如何设置配置,我觉得它对以后的使用非常方便。
您的 .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
在这里您可以看到一个文件,其中提供了想要使用您的代码的人的所有必要信息,但 none 敏感信息。然后有人可以将此 .env.example
复制到 .env
并更改值。
.env
文件包含出于安全原因不应进入源代码管理的密码和 API 密钥。此外,它们可能会在环境之间发生变化(您应该使用不同的 API 密钥进行测试与生产)
你可以做的是将.env.example.php
保留在[=20=]中并用需要配置的变量保持更新,但将值留空。然后在新安装时只需将 .env.example.php
复制到 .env
并更新该环境的值。
.gitignore
文件中添加的文件列表将被 Git 丢弃,不会被 uploaded/downloaded to/from Git 存储库
将 .env
放在 .gitignore
中的主要优点。
1) .env
文件包含有关项目的敏感信息。诸如您的数据库凭据、您的加密密钥之类的信息,如果您的应用程序正在使用任何 API,那么您可以从 .env
文件中加载 API Keys/Access 令牌,您可能不希望有权访问该项目的每个人都可以访问这些凭据。
2) .env
文件包含您可能不想在生产和开发环境中使用的特定设置
例如。在开发环境中,您可以保留 APP_DEBUG = true
,而在生产环境中,建议保留 APP_DEBUG=false
。同样,如果您的应用程序使用任何 API(支付网关),那么您将必须对开发环境使用测试 API 凭据,对生产环境使用实时凭据(这将导致实际在线交易),这可以是通过 .env
文件管理得很好。
这里的答案和很多文章都说 .env 包含敏感信息,所以不应该放在源代码管理中。但问题是 .env 不仅包含敏感信息,它还可能包含典型的设置配置。您可以只留下敏感信息,而将所有其他设置保留在 git 中。
有人建议把.env.example放在git里,其实我也跟着看了一段时间,觉得很“不方便”,尤其是对于新入队的小伙伴。当他们查看代码时,他们发现代码不能运行,然后他们只是从其他老家伙那里复制.env(而不是从.env.example并制作必要的更改。) b/c 对于开发环境,甚至共享 API key/DB 密码等敏感信息。
整个开发团队通常会有一个 API 密钥和一个数据库设置。我看到这种情况时有发生,这让我怀疑 .env.example 的使用。
所以现在我采用的做法是将.env 放在git 中,将敏感信息放在.env.local 中git 忽略。
Ruby dotenv gem 建议这个 https://github.com/bkeepers/dotenv#what-other-env-files-can-i-use
Symfony 4 也更改为 this behavior
当我做 nodejs 项目时,我也使用一个名为 dotenv-flow 的 npm 包来做。