【问题标题】:What is difference between .env files and .ini files? which one is better?.env 文件和 .ini 文件有什么区别?哪一个更好?
【发布时间】:2016-01-03 16:24:30
【问题描述】:

我是一个 PHP 初学者,我发现 Laravel 有 .env 文件来保存一些配置,而 php 也有一个文件格式 .ini 来保存配置。

我想问两者有什么区别,一个比另一个更好。我应该在我的核心项目中添加 dotenv,还是应该为我的配置/环境变量创建类/函数来访问 .ini。

我想了解为什么要创建 dotenv,因为我们已经在 php 中有 ini 文件扩展系统?

【问题讨论】:

  • .env 与当前项目相关,如果您在 .ini 中设置变量,它们对于您的所有项目都是相同的。此外,根据您使用的服务器类型,您可能无法访问 ini
  • @jeremycastelli "另外取决于您使用的服务器类型,您可能无法访问 ini",您能告诉我哪种服务器不支持 ini,表示服务器是托管 PHP 但不支持 ini .. 我很好奇 ..
  • @PuneetSingh 共享虚拟主机很少允许您更改 php.ini 文件,更不用说重新加载 PHP/服务器进程以考虑 INI 更改。这就是@jeremy-castelli 的意思,我猜不是这样。
  • @PuneetSingh,在微服务的上下文中,dotenv 项目旨在合理化配置 init 过程。 Java 有 .property 文件、Php ini 文件、Node json 文件... Dotenv 通过 .env 文件是相互的答案。配置格式和消费者语言之间不再有耦合。同样与属性文件相反,.env 文件没有与工件打包在一起。使工件在环境之间真正相同;

标签: php laravel ini env


【解决方案1】:

根据https://github.com/vlucas/phpdotenv的文档

为什么是 .env?

您永远不应在代码中存储敏感凭据。在环境中存储配置是十二因素应用程序的原则之一。任何可能在部署环境之间发生变化的东西(例如数据库凭据或第三方服务的凭据)都应该从代码中提取到环境变量中。

基本上,.env 文件是一种加载应用程序所需的自定义配置变量的简单方法,而无需修改 .htaccess 文件或 Apache/nginx 虚拟主机。这意味着您不必编辑项目之外的任何文件,并且无论您如何运行项目 - Apache、Nginx、CLI 甚至 PHP 5.4 的内置网络服务器,所有环境变量都始终设置好。它比您所知道的所有其他设置环境变量的方法要容易得多,而且您会喜欢上它的。

不能在 Apache 或 Nginx 中编辑虚拟主机

不向 .htaccess 文件添加 php_value 标志

易于携带和共享所需的 ENV 值

兼容 PHP 的内置 Web 服务器和 CLI 运行器

此外,Laravel 的 .env 文件还有一些扩展功能。例如,您可以在 .env 文件中引用其他变量。

MAIL_USERNAME=admin@server.com
MAIL_FROM_ADDRESS=${MAIL_USERNAME}

【讨论】:

  • 所以,简短的版本:OP 可以对这个主题进行更多研究。
  • 你还没有回答为什么其中一个比另一个更好。
【解决方案2】:

.env 允许将配置加载到系统环境。除非您对所有配置值使用putenv 或类似方法推出自己的解决方案,否则直接加载 INI 文件不会执行此操作。否则你可以随心所欲。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-28
    • 1970-01-01
    • 2022-11-13
    • 1970-01-01
    • 2010-10-30
    • 1970-01-01
    • 2020-08-19
    • 2011-05-22
    相关资源
    最近更新 更多