本地覆盖 Drupal 的 settings.php?
Locally override Drupal's settings.php?
我正在处理一个大型项目,settings.php 文件在存储库中。我需要在本地覆盖用户名和密码,因为我的详细信息不同。我不想影响主 settings.php 文件,因为其他开发人员正在使用它。这可以做到吗?如果我可以创建一个新文件,那么我可以在本地用 GIT 忽略它,这意味着它不会影响存储库。
您可以通过多种不同的方式做到这一点:
将开发环境中的文件设置为只读。这样一来,您就可以将本地文件设置为任何内容,而不会被版本控制的同步覆盖。不过,您需要在每次提交时手动排除该文件。
从版本控制中排除该文件。如果您需要其他开发人员可以使用这些设置,您可以创建一个名为 settings.base.php 的单独文件,他们可以使用该文件创建自己的本地设置。
我的偏好是让设置通用。显然,无论哪个资源具有相同的用户名和密码都不是问题,您可能 运行 问题出在主机上。您可以让每个 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 应该是您所需要的。
我正在处理一个大型项目,settings.php 文件在存储库中。我需要在本地覆盖用户名和密码,因为我的详细信息不同。我不想影响主 settings.php 文件,因为其他开发人员正在使用它。这可以做到吗?如果我可以创建一个新文件,那么我可以在本地用 GIT 忽略它,这意味着它不会影响存储库。
您可以通过多种不同的方式做到这一点:
将开发环境中的文件设置为只读。这样一来,您就可以将本地文件设置为任何内容,而不会被版本控制的同步覆盖。不过,您需要在每次提交时手动排除该文件。
从版本控制中排除该文件。如果您需要其他开发人员可以使用这些设置,您可以创建一个名为 settings.base.php 的单独文件,他们可以使用该文件创建自己的本地设置。
我的偏好是让设置通用。显然,无论哪个资源具有相同的用户名和密码都不是问题,您可能 运行 问题出在主机上。您可以让每个 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 应该是您所需要的。