И так перейдем к примеру решения данной проблемы.
В папку /protected/config/ добавим 2 файла: mainLocal.php и mainServer.php.
Теперь у нас есть 3 файла с настройками. main.php - содержит конфигурацию по умолчанию. mainLocal.php - конфигурация для локальной машины. mainServer.php - конфигурация для сервера.
В файле mainLocal.php мы можем использовать настройки соединения с локальной базой данных, выводить отладочную информацию, включить модуль Gii и многое другое.
Пример содержания файла mainLocal.php:
<?php
return CMap::mergeArray(
require(dirname(__FILE__) . '/main.php'), array(
'modules' => array(
'gii' => array(
'class' => 'system.gii.GiiModule',
'password' => '123',
'ipFilters' => array('127.0.0.1', '::1'),
),
),
'components' => array(
'db' => array(
'connectionString' => 'mysql:host=localhost;dbname=localDBName',
'emulatePrepare' => true,
'username' => 'localDBUser',
'password' => 'localBDPassword',
'charset' => 'utf8',
'enableProfiling' => true,
),
),
'params' => array(
//Дополнительные параметры для локальной машины ...
)
)
);
Файл mainServer.php будет содержать настройки подключения к рабочей базе данных и другие необходимые настройки приложения на сервере.
Пример содержания файла mainServer.php:
<?php
return CMap::mergeArray(
require(dirname(__FILE__) . '/main.php'), array(
'components' => array(
'db' => array(
'connectionString' => 'mysql:host=localhost;dbname=serverDBName',
'emulatePrepare' => true,
'username' => 'serverDBUser',
'password' => 'serverDBPassword',
'charset' => 'utf8',
'enableProfiling' => true,
),
),
'params' => array(
//Дополнительные параметры для сервера ...
)
)
);
В корневой index.php добавим проверку на то, где открывается приложение, локально или на сервере и какой файл конфигураций подключать:
<?php
$yii = dirname(__FILE__) . '/framework/yii.php'; // Если путь к yii отличается, то перенесите это строку в условие
if($_SERVER['REMOTE_ADDR'] == "127.0.0.1") {
/**
* В зависимости от настроек, боевой сервер может отдавать ip не внешний, а локальный (127.0.0.1),
* тогда на сервере будет подключаться файл mainLocal.php, соответственно приложение не будет работать.
* Это можно избежать заменив условие проверки на:
* if ($_SERVER['HTTP_HOST'] != 'my-site-host.domain') {
*/
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_TRACE_LEVEL') or define('YII_TRACE_LEVEL', 3);
$config = dirname(__FILE__) . '/protected/config/mainLocal.php';
} else {
define('YII_DEBUG', false);
$config=dirname(__FILE__) . '/protected/config/server_main.php';
define('YII_ENABLE_ERROR_HANDLER', false);
define('YII_ENABLE_EXCEPTION_HANDLER', false);
}
require_once($yii);
$app = Yii::createWebApplication($config)->run();
Вот и все, теперь приложение будет использовать нужные настройки в зависимости от места запуска.
devreadwrite.com


Подборка адаптивных шаблонов для вашей CMS
Статьи по
Как получить и установить HTTPS сертификат на сайта

Комментарии
А на сервер так прям и заливаете конфиги с конфигом базы - ведь в гит репозиторий он попадет в открытом виде - это не безопасно - при такой конфигурации
ОтветитьЕсли у вас репозиторий в github или bitbucket открытый, то ставте настройки базы в .gitignore, если закрытый, то уже на свое усмотрение
ОтветитьПодтверждаю!
Ответить