如果我的Yii应用程序有一个公共Git存储库。我想知道如何将DB配置设置保密?我不能忽视整个文件。
答案 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