将数据库设置从 application.ini 中取出并放入环境中

2024-02-04

在基于 Zend 的应用程序的传统编码中,数据库设置存储在 application.ini 中。这会存储每个应用程序的设置。

StackOverflow 上是否有人探索过将数据库设置从 application.ini 移动到环境中的可能性?例如,一种基本方法是将可能的数据库连接设置存储在 Apache2 envvars 文件中,或者可能存储在 /etc/profile 或 /etc/environment 之类的文件中。

我想这样做有几个原因:

1) 应用程序中存在实时生产数据库设置存在安全风险。开发人员可能会无意中连接到实时数据库并导致客户敏感数据损坏。这将保护开发人员、企业和最终用户。

2)维护和管理多个应用程序的db设置很困难。例如,如果数据库的用户名或密码发生更改,那么我们需要更改 application.ini 或多个应用程序,这意味着再次推出该文件或整个应用程序。

3) 应用程序可以部署到数据库设置不同的多个“生产”环境。因此,application.ini 中可能必须有多个部分 - 例如生产数据中心 X、生产数据中心 Y。

正如您所看到的,关于将数据库设置保留在服务器端存在争议。因此,最好将应用程序外部的数据库设置放在全局区域中以供所有应用程序访问?这将在它自己的源代码控制中,也许开发人员无法访问。

你们怎么想?有人做过类似的事情吗?我喜欢全局 application.ini 的想法(可能称为 database.ini?)

期待听到有关该主题的一些回应。

Regards,

Steve


在我的上一个项目中,我做了类似的事情。我有application.ini它存储在存储库中,包含应用程序的常见设置(视图设置、助手路径、启用布局等)。但是,每个应用程序实例(每个开发人员都有一个+测试和开发服务器)都有自己的local.ini文件(没有版本控制)包含数据库设置和开发指令(启用 FirePHP、ZFDebug)。借助该解决方案,我们可以“全局”进行更改 - application.ini,并且每个开发人员都可以“本地”更改设置 - 使用local.ini文件。

In Bootstrap.php我将它们合并如下:

protected function _initLocalConfig()
{
    $globalConfig = new Zend_Config($this->getOptions(), true);
    try {
        $localConfig = new Zend_Config_Ini(APPLICATION_PATH . '/configs/local.ini');
        $globalConfig->merge($localConfig);
        $this->setOptions($globalConfig->toArray());
    } catch (Zend_Config_Exception $e) {
        throw new Exception('File /configs/local.ini not found. Create it, it can be empty.');
    }
} 

我在这里使用第二个静态命名的 .ini 文件,在另一个项目中我们使用基于主机名的 .ini 文件。它们也可以是 JSON、XML 或 YAML 文件(以利用内置的 Zend_Config 解析器),或者您可以编写自己的适配器。

正如您所看到的,您几乎可以从任何您想要的地方获取非常规配置:)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将数据库设置从 application.ini 中取出并放入环境中 的相关文章

  • 加密字段的部分搜索

    最近我被分配了一个问题 加密数据库字段 例如SSN 但仍然必须保持 部分搜索 工作 例如 SSN 123 45 6789 在数据库中被加密为 abcdxyz 当用户在搜索框中输入 2345 时 它必须出现在结果中 我们的数据库中有数百万条记
  • zend框架FlashMessenger问题

    我正在使用 FlashMessenger 助手来设置消息 但无法使用 getMessages 方法检索消息 它返回 null 这是我的示例代码
  • 如何使sequelize.sync()省略一些模型?

    我在数据库 mysql 中使用表和视图 因此对于开发 测试环境我想使用sync 但它在视图上崩溃 我可以以某种方式省略这些模型吗 当我想通过 Sequelize 创建和使用视图时 我使用与 Crusader 的答案非常相似的方法 在这种情况
  • 如何使用 Psequel GUI 连接到 Mac 上的 localhost PostgreSQL?

    我跟着本教程 http www moncefbelyamani com how to install postgresql on a mac with homebrew and lunchy 在我的 Mac 上安装 PG 这是我第一次在本地
  • Java 大型数据库插入

    我有一个数据库 需要在其中插入批量数据 一次大约 500k 条记录 我正在使用 derby 进行测试 发现这么多记录的插入时间约为 10 15 分钟 我正在用 Java 进行批量插入 这次看起来是否很慢 在普通笔记本电脑上工作 有没有办法加
  • 将关系 R 分解为 1NF 后最少存在多少张表?

    考虑具有以下属性类型的关系 R A B C D E F G 键总数 1 A 一组简单 或 原子 或 单值属性 B C 多值属性集 D E 复合属性集 F G 将关系 R 分解为 1NF 后 存在的表的最小数量是多少 A 3 B 2 C 4
  • 同步框架服务器到服务器同步

    I have kind of a such scenario source microsoft com http i msdn microsoft com bb887608 Figure3 en us png Here i need to
  • 如何从access中的表中获取选择性记录

    下面给出的是我的查询结果 但有很多冗余记录 因此 我想过滤掉这个查询的结果 我的目标是每个角度仅提取两个记录 第一个和最后一个 例如当角度为195 我想获得它的第一条记录日期 2 27 2017 时间 2 00 00 AM和 日期为的第二条
  • 当我使用设置数据时,Flutter firestore 会覆盖数据

    我一直在尝试将数据添加到我的 firestorm 数据库中的部分 我有一个集合 gt 文档 gt 数据字段 每当我使用 setData key value 时 它总是会覆盖文档中已有的数据 有没有办法解决 那是因为什么setData obj
  • 如何让mysql每隔1小时自动运行一次查询?

    我的数据库中有整数值 我想随着时间的流逝而减少它 我该怎么做 您不需要减少该值 您可以只存储基础值并创建一个视图来快速计算该值 像这样的东西 create table hourly base value int starttime date
  • 如何在 SQL Server 中生成并手动插入唯一标识符?

    我正在尝试在表中手动创建一个新用户 但发现如果代码不抛出异常 就不可能生成 UniqueIdentifier 类型 这是我的例子 DECLARE id uniqueidentifier SET id NEWID INSERT INTO db
  • 将到期日期作为 TIMESTAMP 列的默认值

    有没有办法将列的默认值设置为过期日期 从CURRENT TIMESTAMP 我已经尝试过 ALTER TABLE table ADD COLUMN expire TIMESTAMP NOT NULL DEFAULT TIMESTAMPADD
  • 搜索拥有超过十亿条记录的数据库的最有效方法?

    我的客户有一个巨大的数据库 仅包含三个字段 主键 无符号数 姓名 多字文本 描述 最多 1000 个 varchar 该数据库拥有超过数十亿条条目 我以前没有处理如此大量数据的经验 他希望我设计一个使用 AJAX 如 Google 的界面来
  • 数据库查询的内部实现

    根据我的经验 我使用过很多查询 例如select order by wheremysql sql server oracle 等中的子句等 有那么一刻我想 1 内部是如何编写来实现上述查询的 2 他们使用哪种语言 3 那是编程语言吗 如果是
  • 实体框架:如何检测数据库的外部更改

    我有一个存储过程可以更改数据库中的大量数据 该存储过程是从同时使用 EF 进行数据操作的应用程序调用的 因此 我单击一个按钮 存储过程在数据库中运行 数据发生更改 并且 EF 向用户显示旧数据 有没有办法强制 DbContext 或 Obj
  • 使用 PostgreSQL 查找并删除重复行

    我们有一个包含以下列的照片表 id merchant id url 该表包含组合的重复值merchant id url 因此 一行可能会出现多次 234 some merchant http www some image url com a
  • mysql 部分索引、反向索引

    我有一张包含单词列表的表格 字 VARCHAR 16 我需要创建一个反向索引 IE 单词 apple 将索引为 elppa 单词 banana 将索引为 ananab 依此类推 另外 是否可以索引单词的一部分 例如 跳过第一个 最后一个或
  • cron 作业和 PHP (Zend Framework) 入门

    我对 cron 作业这个主题完全陌生 所以我不知道从哪里开始学习它们 何时 为何或如何将它们与我的 Zend Framework 应用程序或一般的 PHP 一起使用 任何人都可以通过示例解释该过程 或者推荐一些好的资源来入门吗 Cron 作
  • PyCharm 未使用环境变量进行更新

    当我使用vim更新我的环境变量 在 bashrc PyCharm 不会立即获取更新 我必须关闭程序 源 bashrc再次 然后重新打开 PyCharm 有没有办法让 PyC harm 自动获取更改 或无需关闭 当任何进程创建时 它都会从其父
  • 数据库优化命令

    在用户可以下订单的数据库中 最好有一个包含地址的新表 还是每个订单的标题中都有地址数据 这不仅涉及用户 及其地址 还涉及您所销售产品的价格和其他信息 这些信息可能会发生变化after订单已下达 但订单本身必须保持完整 一般来说 有两种方法

随机推荐