在安装配置文件期间如何自定义settings.php


9

我正在为当前公司内部项目创建安装配置文件。

在安装过程中,自定义模块之一在期间崩溃init(),因为它尝试使用定义了的全局变量settings.php(这是模块的当前默认行为)

使用system_form_install_settings_form_alter()我更改了设置表单,通过为用户输入添加一个输入文本字段,并在提交时将该值附加到settings.php,但settings.php在配置文件安装开始之前将其重写。

有什么方法可以防止settings.php安装过程中的清理?


1
也许更容易修补崩溃的模块,然后将更改提交到该项目的问题队列。在接受更改之前,您可以在安装配置文件的makefile中添加对补丁程序的引用。
greg_1_anderson

嗨,谢谢您的回答。这是一个自定义的内部模块(不是贡献模块),但是,是的,我打了补丁并解决了问题。
Paulo Gomes 2012年

使用覆盖settings.php文件的settings.local.php文件是否有帮助?
贝丝

这个链接对我有很大帮助,previousnext.com.au
blog /…

Answers:


3

您可能会发现使用它更容易 settings.common.php

通常在团队项目期间,我们在本地settings.php使用db凭据等。并且在本地使用settings.common.php对安装和部署环境通用的设置。

您可以在settings.common.php其中添加包含/要求行settings.php

require 'settings.common.php'; // same directory, e.g sites/default/settings.common.php

然后在安装过程中根据需要写入。


3

我的答案取决于使用Apache的服务器,但我认为其他任何Web服务器也可以完成此操作。

在您的virtualhost配置中,您可以设置环境的所有变量:

SetEnv DBUSER datbase_user
SetEnv DBPASS database_pass
SetEnv DBNAME database_name
SetEnv DBHOST localhost

并在您的settings.php文件中:

$databases = array (
   'default' => 
   array (
     'default' => 
     array (
       'database' => $_SERVER["DBNAME"],
       'username' => $_SERVER["DBUSER"],
       'password' => $_SERVER["DBPASS"],
       'host' => $_SERVER["DBHOST"],
       'port' => '',
       'driver' => 'mysql',
       'prefix' => '',
    ),
   ),
 );

您也可以通过这种方式设置任何其他变量。

如果您担心$ _SERVER数组使用不当,可以在settings.php底部取消设置所有重要变量:

unset($_SERVER["DBUSER"]);
unset($_SERVER["DBPASS"]);
unset($_SERVER["DBNAME"]);
unset($_SERVER["DBHOST"]);

这就是我们在办公室中在开发环境,登台甚至生产之间移动站点的方式。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.