- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
考虑将设置信息存储在文档根文件夹之外的 .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/
首先对WCF与WebService的定义进行概括,接着介绍了WCF的优势,最后就是对WCF与WebService两者的根本区别进行比较,具体内容如下 1、定义 1.WebService:严格来
关闭。这个问题是opinion-based .它目前不接受答案。 想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题. 5年前关闭。 Improve t
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 8 年前。 Improve
谁能告诉我将下一个脚本标记放在 元素之后和将它放在 元素之前有什么好处? (function (){ var script = document.createElement("script"); s
我最近遇到了一个 JavaScript 脚本,其中作者似乎试图避免在代码中使用字符串并将所有内容都分配给一个变量。 所以代替 document.addEventListener('click', (e
Scott Meyers 在“Effective Modern C++”中说表达式 Matrix sum = m1 + m2 + m3 + m4 (其中所有对象的类型均为 Matrix)“如果 ope
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
免责声明:我是网络开发的新手,所以请多多包涵... 堆栈:Angular 前端,后端的 Tornado(基于 python)网络服务器 我一直在使用 RxJs 和 WebSocket 成功地与后端通信
我一直在调查我的 Flutter 应用程序的 JSON 解析,并且有一个关于我无法解决的工厂构造函数的问题。我试图了解使用工厂构造函数与普通构造函数的优势。例如,我看到很多 JSON 解析示例,它们使
添加 SQL 后尝试打开 TadsQuery 时出现 5400 AE_INTERNAL_ERROR。当我将相同的 SQL 直接放在 TadsQuery 中时,没有错误。您的帮助文件指示我联系 Adva
关闭。这个问题是opinion-based .它目前不接受答案。 想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它. 8年前关闭。 Improve this
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 9 年前。 Improv
我想定义一个函数,当给定一个整数时,它将返回一个字符串。像这样: # Pseudocode function get_string(i) return my_string_array[i] end
我曾尝试在 Linux 和 Windows 上使用 DBD::Advantage,但没有成功。 Windows 版本附带了一个看似完整的安装程序,但它留下了 DBD-Advantage-8.10.ta
为什么说 NoSQL 在结构上比某些 SQL 数据库更快?假设我在某个 SQL 表的列上添加了一些索引。有人可以提供某种更快的查询吗? 我正在阅读有关 redis 的内容。 class User <
我的问题很简单:如果接口(interface)由单个类实现,那么使用接口(interface)有什么好处吗? 我一直认为只有当该接口(interface)有多个实现时,接口(interface)才是好
考虑这些(或多或少)等价的类型签名: f1 :: [a] -> Int -> a f2 :: Integral b => [a] -> b -> a f2 比 f1 更通用,这是一个很大的优势,但是
我们在 Scala 中部分应用了函数- def sum(a:Int,b:Int,c:Int) = a+b+c val partial1 = sum(1,_:Int,8) 我想知道使用部分应用函数的优点
你看下面的代码,我是如何使用 session 变量的;所以这三个问题是: 它们存放在哪里? (服务器或客户端) 它们对于每个网页访问者来说都是独一无二的吗? 我可以在完成工作后使用 ajax 或简单的
我知道这是一个常见问题,互联网上有关于此主题的资源,但我想从这个社区了解每个人在部署博客时对子域与子文件夹的想法(SEO 优势)。 谢谢。 最佳答案 我研究过一次,根据社区反馈以及权衡利弊,我会说去一
我是一名优秀的程序员,十分优秀!