如果我的 Yii 应用程序有一个公共 Git 存储库。我想知道如何将数据库配置设置保密?我不能忽略整个文件。
问问题
1008 次
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 回答
1
于 2013-04-05T11:46:20.943 回答
0
我不使用 Yii,所以我不知道它的结构,但我知道的一件事是,你不能用 git 忽略文件的行。所以我更喜欢你 gitignore 你的真实配置文件,而不是真实文件,还创建一个 config_sample 文件来发布并写下说明,让它在 README.md 中工作
于 2013-04-05T11:37:30.117 回答