本地覆盖 Drupal 的 settings.php?

Locally override Drupal's settings.php?

我正在处理一个大型项目,settings.php 文件在存储库中。我需要在本地覆盖用户名和密码,因为我的详细信息不同。我不想影响主 settings.php 文件,因为其他开发人员正在使用它。这可以做到吗?如果我可以创建一个新文件,那么我可以在本地用 GIT 忽略它,这意味着它不会影响存储库。

您可以通过多种不同的方式做到这一点:

  1. 将开发环境中的文件设置为只读。这样一来,您就可以将本地文件设置为任何内容,而不会被版本控制的同步覆盖。不过,您需要在每次提交时手动排除该文件。

  2. 从版本控制中排除该文件。如果您需要其他开发人员可以使用这些设置,您可以创建一个名为 settings.base.php 的单独文件,他们可以使用该文件创建自己的本地设置。

  3. 我的偏好是让设置通用。显然,无论哪个资源具有相同的用户名和密码都不是问题,您可能 运行 问题出在主机上。您可以让每个 developer/server 覆盖它的主机映射到您希望它指向的实际服务器。在 Linux 中是 /etc/hosts,在 windows 中是 /windows/system32/drivers/etc/hosts.

#3 的示例主机设置:

开发者机器

127.0.0.1   databaseserver.com

登台机

192.168.1.100    databaseserver.com

生产机器可能不需要重新映射。除非你从来没有数据库的主机名,在这种情况下,你可以创建一些像 my.database.srv 这样的主机名,然后也将其设置为生产。

关于上述所有内容,尤其是#3,有一点很方便,那就是它是一个独立于平台的解决方案,因此您可以为任何类型的项目(不仅仅是 Drupal)执行此操作。

您可以将其添加到 settings.php 文件的底部:

/**
 * settings file for local development only.
 *
 * This file should NEVER be committed to version control and should never exist
 * on a non-local development machine.
 */
if (file_exists('./' . conf_path() . '/settings.local.php')) {
  require './' . conf_path() . '/settings.local.php';
}

然后按照您的建议将 settings.local.php 添加到您的 .gitignore 文件中。

Screenack 发布的 link 应该是您所需要的。