如何使用Yii使用多个配置文件

时间:2011-10-14 06:57:59

标签: php yii

我想为我的开发和生产服务器使用不同的配置文件。我想为每个服务器和不同的日志记录过程定义不同的数据库配置。

因此,当我在服务器上运行时,我只需更改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';

4 个答案:

答案 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_', ); ?>

的文件