#php #yii
#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';
Ответ №1:
Возможно, эта статья даст вам некоторую информацию.
Ответ №2:
Мое решение также основано на отдельных конфигурациях 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;
Ответ №3:
Попробуйте это:
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';
}
Ответ №4:
если только изменить подключение к базе данных
'db'=>require($_SERVER['REMOTE_ADDR']=='127.0.0.1' ? 'db_dev.php' : 'db.php'),
и создавать файлы в каталоге конфигурации с содержимым
<?php return array(
'connectionString' => 'mysql:host=localhost;dbname=yii',
'emulatePrepare' => true,
'schemaCachingDuration' => 3600,
'enableProfiling'=>true,
'enableParamLogging' => true,
'username' => 'root',
'password' => '',
'charset' => 'utf8',
'tablePrefix' => 'tbl_',
); ?>