php - 与 .php 文件相比,将信息存储在 .env 文件中有什么优势?

标签 php

考虑将设置信息存储在文档根文件夹之外的 .env 文件中,正如最佳实践所建议的那样...使用 .env 文件而不是 .php 文件有什么优势?

.env 文件将由库解析并存储在 ENV 变量中。 .php 文件不需要解析,并将存储有关 ENV 变量的信息。

谢谢!

最佳答案

在开发时,您将拥有一组在本地环境或您正在开发的任何其他环境中配置的 key 。您不希望与与您一起工作的其他开发人员共享这些 key (数据库密码、电子邮件服务等)。如果您要与全世界共享代码,也不会。

.env 文件的创建是为了让您拥有一个工作环境,而不必与世界或您团队的其他成员共享这些 key 。它们对于项目所处的环境来说应该是独一无二的。

当您创建将在整个项目中使用的 key 时,除了将它们添加到您的 .env 文件之外,您还应该将它们添加到 .env.example 被推送到存储库。将键保留在那里,同时将 .env.example 的值保留为空,以便其他开发人员了解项目工作所需的键是什么以及他们应该在其中添加什么而不给出提示您的本地密码是什么。

此外,当您在本地环境中工作时,您通常会使用本地密码。当您部署到生产服务器时会出现一个问题,其中将存在包含敏感信息的真实密码。因此,您不希望这些存在于您的存储库中,并且绝对不希望它们永久存储在您的存储库中(这是职业责任,特别是当您被标记为开发人员而不是系统管理员时,在这种情况下一旦项目部署到生产环境,系统管理员将在其中添加 key )。

这是绕过上述这些问题的一种优雅方式

回应你在评论中的第二个问题

老实说,如果您最终遵循我上面解释的内容,则两种方式都可以做到。主要目标是保护您的变量。但是你可以拒绝将 php 文件推送到 repo。

在我看来,为什么你应该使用 .env 而不是 .php 如下:
1. 使用 .env 你马上就知道它是一个环境变量持有者。 .php不管怎么命名都不是那么直观;
2. .env 列出目录时会是一个神秘的文件;
3. 与同一个仓库中的其他开发人员一起工作时,更容易快速识别和理解不应在该提交上推送的内容(甚至考虑在 Hook 上添加额外的安全层以确保 .env 不会在提交时被推送。这更难,你必须为 .php 文件硬编码);

我想在您的论证层面,这些将是在文件之间做出决定时的一些 Go Tos。我会将 .php 文件保留为 php 编程文件而不是配置文件

现在,如果你问我在 .env 还是 .yml 等之间,我会说选择你熟悉/感觉舒服的那个。最后你避免了 .php 相同的:)

PS:此外,如果您考虑在需要其中一个环境变量 时如何在代码中引用它们,那么当您看到类似的东西:

getenv('YOUR_VARIABLE_HERE');

关于php - 与 .php 文件相比,将信息存储在 .env 文件中有什么优势?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53413265/

相关文章:

php - 如何在 Magento 中获取商店信息?

php - MySQL NOW() 和 PHP 日期 ('c' 之间的区别)

php - 使用 PHP 安全绑定(bind)到 Active Directory 的问题

php - RabbitMQ 和 php-amqplib : cunsumer reconnect

phpactiverecord - 显示生成的查询?

php - 我可以在 admin.php?page=example 等查询页面上执行 $pagenow 吗?

php - laravel homestead 上的 sendmail 504 网关超时

php - 获取与用户相关的所有行

php - 如何在网站中使用我们自己的字体,与所有用户兼容?

php - PHP 中的多级 JSON 数组