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

Php 如何使用Yii使用多个配置文件,php,yii,Php,Yii,我想为我的开发和生产服务器使用不同的配置文件。我想为每台服务器定义不同的数据库配置和不同的日志记录过程 因此,当我在服务器上运行时,我只需更改index.php文件 发展: // developement $config=dirname(__FILE__).'/protected/config/development.php'; // production // $config=dirname(__FILE__).'/protected/config/production.php'; 制作:

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

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

也许这篇文章能给你一些信息

试试这个:

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';
}

我的解决方案也是基于。这种方法的优点在于,公共配置存储在config/main.php中,只有差异存储在config/main_prod.php和config/main_dev.php中,这要归功于

config/main.php示例:


如果仅更改数据库连接

'db'=>require($\u SERVER['REMOTE\u ADDR']='127.0.0.1'?'db\u dev.php':'db.php'),

并在config dir中创建内容为

<?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;
<?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;