2

如果我的 Yii 应用程序有一个公共 Git 存储库。我想知道如何将数据库配置设置保密?我不能忽略整个文件。

4

4 回答 4

7

创建第二个忽略的配置并合并结果:

$config=require_once(dirname(__FILE__).'/protected/config/main.php');

$configIgnored=require_once(dirname(__FILE__).'/protected/config/ignored.php');

require_once($yii);

$config = CMap::mergeArray($config, $configIgnored);
Yii::createWebApplication($config)->run();
于 2013-04-05T11:48:53.493 回答
2

首先... 在您的存储库中保留一个受保护的/config/main.php.dist 文件。“dist”代表“分布”。这个文件是一个普通的配置文件,但没有合理的数据。例如,您可以拥有:

...
'db' => array(
  'connectionString' => 'mysql:host=[[hostname]];dbname=[[database]]',
  'emulatePrepare' => true,
  'username' => '[[username]]',
  'password' => '[[password]]',
  'charset' => 'utf8',
),
...

请记住,您的用户名、密码……不是项目内容。此信息仅与您有关,与您的申请无关。

第二... 准备您的应用程序以进行部署。例如,我以这种方式使用 phing:

<project name="yourProject" default="install">
    <target name="install" description="Prepare application for deploy">
        <input propertyname="hostname"
               defaultValue="localhost" promptChar="?">hostname</input>
        <input propertyname="database"
               defaultValue="database" promptChar="?">database</input>
        <input propertyname="username" defaultValue="root" promptChar="?">username</input>
        <input propertyname="password" defaultValue="root" promptChar="?">password</input>
        <copy file="protected/config/main.php.dist"
              tofile="protected/config/main.php"
              overwrite="false">
            <filterchain>
                <replacetokens begintoken="[[" endtoken="]]">
                    <token key="username" value="${username}" />
                    <token key="password" value="${password}" />
                    <token key="hostname" value="${hostname}" />
                    <token key="database" value="${database}" />
                </replacetokens>
            </filterchain>
        </copy>
    </target>
</project>

通过这种方式,您永远不会将配置设置存储在您的存储库中,只需要运行

$ phing install

在您的机器中配置应用程序。显然你需要安装 phing。

于 2013-04-05T18:35:49.310 回答
0

我不使用 Yii,所以我不知道它的结构,但我知道的一件事是,你不能用 git 忽略文件的行。所以我更喜欢你 gitignore 你的真实配置文件,而不是真实文件,还创建一个 config_sample 文件来发布并写下说明,让它在 README.md 中工作

于 2013-04-05T11:37:30.117 回答