使用Git管理Yii应用程序

时间:2013-04-05 11:33:53

标签: git github yii

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

4 个答案:

答案 0 :(得分: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();

答案 1 :(得分:2)

首先...... 在存储库中保留protected / 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。

答案 2 :(得分:1)

答案 3 :(得分:0)

我不使用Yii所以我不知道它的结构,但我知道的一件事是,你不能忽略git文件的行。所以我更喜欢你gitignore你的真实配置文件,而不是真正的文件,也创建一个config_sample文件发布和写下指令,使其工作到README.md