我想为我的开发和生产服务器使用不同的配置文件。我想为每个服务器和不同的日志记录过程定义不同的数据库配置。
因此,当我在服务器上运行时,我只需更改index.php
文件。
发展:
// developement
$config=dirname(__FILE__).'/protected/config/development.php';
// production
// $config=dirname(__FILE__).'/protected/config/production.php';
生产:
// developement
// $config=dirname(__FILE__).'/protected/config/development.php';
// production
$config=dirname(__FILE__).'/protected/config/production.php';
答案 0 :(得分:7)
也许这篇文章会向您提供一些信息。
Yii Framework Separate Configurations for Different Environments
答案 1 :(得分:3)
我的解决方案也基于Yii Framework Separate Configurations for Different Environments。事实上,此方法的优点是常见配置存储在 config / main.php 中,并且只有差异存储在 config / main_prod.php 和 config / main_dev中。 php 感谢CMap::mergeArray。
config / main.php 示例:
<?php
$config = array( ... );
switch ($_SERVER['SERVER_NAME']) {
case 'your-prod-server-name.com':
$config = CMap::mergeArray(
$config,
require(dirname(__FILE__) . '/main_prod.php')
);
break;
default:
$config = CMap::mergeArray(
$config,
require(dirname(__FILE__) . '/main_dev.php')
);
break;
}
return $config;
当然,您可以使用$_SERVER['SERVER_NAME']
代替YII_DEBUG
:
<?php
$config = array( ... );
if (YII_DEBUG) {
$config = CMap::mergeArray(
$config,
require(dirname(__FILE__) . '/main_dev.php')
);
} else {
$config = CMap::mergeArray(
$config,
require(dirname(__FILE__) . '/main_prod.php')
);
}
return $config;
答案 2 :(得分:0)
试试这个:
if ($_SERVER['HTTP_HOST'] == 'yourdomain.com') {
$config = dirname(__FILE__).'/protected/config/production.php';
} else {
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_TRACE_LEVEL') or define('YII_TRACE_LEVEL', 3);
$config = dirname(__FILE__).'/protected/config/development.php';
}
答案 3 :(得分:0)
如果只更改数据库连接
'db'=>require($_SERVER['REMOTE_ADDR']=='127.0.0.1' ? 'db_dev.php' : 'db.php'),
在config dir中创建内容为
<?php return array(
'connectionString' => 'mysql:host=localhost;dbname=yii',
'emulatePrepare' => true,
'schemaCachingDuration' => 3600,
'enableProfiling'=>true,
'enableParamLogging' => true,
'username' => 'root',
'password' => '',
'charset' => 'utf8',
'tablePrefix' => 'tbl_',
); ?>