Как использовать несколько файлов конфигурации с помощью Yii - PullRequest
2 голосов
/ 14 октября 2011

Я хочу использовать другой файл конфигурации для моего сервера разработки и производства.Я хочу определить различные конфигурации базы данных для каждого сервера и разные процедуры ведения журнала.

Поэтому, когда я запускаю на своем сервере, я просто изменяю файл 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 ]

7 голосов
/ 14 октября 2011

Может быть, эта статья даст вам некоторую информацию.

Отдельные конфигурации Yii Framework для разных сред

3 голосов
/ 10 ноября 2012

Мое решение также основано на Отдельных конфигурациях Yii Framework для различных сред .Преимущество этого метода в том, что общая конфигурация хранится в 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;
0 голосов
/ 14 июля 2014

если изменить только соединение с базой данных 'db'=>require($_SERVER['REMOTE_ADDR']=='127.0.0.1' ? 'db_dev.php' : 'db.php'),

и создание файлов в директории config с содержимым <?php return array( 'connectionString' => 'mysql:host=localhost;dbname=yii', 'emulatePrepare' => true, 'schemaCachingDuration' => 3600, 'enableProfiling'=>true, 'enableParamLogging' => true, 'username' => 'root', 'password' => '', 'charset' => 'utf8', 'tablePrefix' => 'tbl_', ); ?>

0 голосов
/ 28 февраля 2012

Попробуйте это:

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';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...