Настройка файла main.php в приложении на Yii: конфигурации для локальной разработки и для сервера. Наследование конфигураций.
Добавляем условие в index.php о том что сайт открывается на локальном хосте или нет:
<?phpif($_SERVER['HTTP_HOST']=='loco:8888'){if($_SERVER['REMOTE_ADDR'] == "127.0.0.1"){ defined('YII_DEBUG') or define('YII_DEBUG',true); $yii=dirname(__FILE__).'/../YiiRoot/framework/yii.php'; $config=dirname(__FILE__).'/protected/config/local_main.php'; } else { define('YII_DEBUG', false); $yii=dirname(__FILE__).'/../YiiRoot/framework/yii.php'; $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();
Наследование конфигурации
Можно не делать, если после завершения работ сайт не хотите дорабатывать локально. Но так правильнее.
Почти полностью дублировать конфигурацию в файле разработчика и рабочем файле неудобно.
Заводим в папке config три файла:
1. main.php с конфигурацией приложения по умолчанию.
2. local_main.php, с конфигурацией для разработки. К примеру, в этой конфигурации мы можем использовать другую базу данных, выводить отладочную информацию на экран и многое другое. Согласно правильному предложению от Larry Ullman включим модуль Gii только в локальном режиме, из main.php его вырежем или закомментируем, чтобы он вообще не был подключён на рабочем сайте, а участвовал только на этапе разработки, что очень даже логично и правильно.
Начиная с версии 1.1.2, в состав Yii входит веб-инструмент для генерации кода, называемый Gii. Он заменяет существовавший до этого консольный генератор yiic shell.
3. server_main.php, содержащий настройки под сервер.
Для наследования используем CMap::mergeArray.
Содержимое local_main.php:
<?php return CMap::mergeArray( // наследуемся от main.php require(dirname(__FILE__).'/main.php'), array( 'modules'=>array( 'gii'=>array( 'class'=>'system.gii.GiiModule', 'password'=>'giiloco', // If removed, Gii defaults to localhost only. Edit carefully to taste. 'ipFilters'=>array('127.0.0.1','95.220.83.225','::1'), ), ), 'components'=>array( // переопределяем компонент db 'db'=>array( 'connectionString' => 'mysql:host=localhost;dbname=srv12683_loco', 'emulatePrepare' => true, 'username' => 'root', 'password' => 'root', 'charset' => 'utf8', 'tablePrefix' => 'tbl_', ), ), ) );
server_main.php c пустым массивом, так как мы в main.php уже задали компонент 'db' для базы, находящейся на сервере:
<?php return CMap::mergeArray( // наследуемся от main.php require(dirname(__FILE__).'/main.php'), array() );
almix
Разработчик Loco, автор статей по веб-разработке на Yii, CodeIgniter, MODx и прочих инструментах. Создатель Team Sense.
Вы можете почитать все статьи от almix'а.
- 14 Разработка приложения на Yii. Урок 14: Выводим список категорий как новый виджет на сайте (29.04.2015)
- 13 Разработка приложения на Yii. Урок 13: Внедряем категории для статей. (29.04.2015)
- 12 Разработка приложения на Yii. Урок 12: Профилирование приложения, включаем кеширование. (20.01.2015)
- 11 Yiico. Видеокурс по разработке сайта на Yii. Урок 11: Отладка приложения, включаем журналирование. (20.01.2015)
- 10 Yiico. Видеокурс по разработке сайта на Yii. Урок 10: Если ваше приложение находится не в корневой папке, а во вложенной. (19.10.2014)
- 9 Разработка сайта на Yii с нуля. Урок 9. Выборка статей определённого автора. (13.08.2014)
- 8 Разработка сайта на Yii с нуля. Урок 8. Вызов в моделях функции, общей для них. Как избегать дублирования кода? (25.07.2014)
- 7 Разработка сайта на Yii с нуля. Урок 7. Изменение количества выводимых записей на странице в CGridView. Включаем сессии Yii. (04.09.2013)
- 6 Разработка сайта на Yii с нуля. Урок 6. Автоматич. отправка оповещений об одобренных комментариях на email автора комментария (11.08.2013)
- 5 Разработка сайта на Yii с нуля. Урок 5. Переименовываем blog в yiico. Изменяем "Home" в breadcrumbs. Включаем Gzip-сжатие. (09.08.2013)
- 4 Курс по Yii с нуля. Урок 4. Дорабатываем простую работу с пользователями: хранение пароля при редактировании пользователя. (13.04.2013)
- 3 Курс по Yii с нуля. Урок 3. Создаём новых пользователей. Организуем простую систему авторизации. Аутентификация, пароли, соли. (20.07.2014)
- 2 Yii + Git (github) на Mac. (24.03.2013)
- 2 Курс по Yii с нуля. Урок 2. Переносим и настраиваем Yii и проект нашего сайта на рабочем сервере. Избавляемся от index.php в url (09.07.2014)
- 1 Курс по Yii с нуля. Урок 1. Устанавливаем Yii на локальном компьютере. Заводим проект будущего сайта. (10.03.2013)
- 0 Composer – пакетный менеджер PHP. Что и как? (22.07.2014)
- 0 MySQL: проверить содержится ли значение в поле столбца (в столбце хранится строка значений через запятую) (22.05.2014)
- 0 Yii: Статичные страницы (создание, редактирование, удаление) (28.04.2014)
- 0 Yii: Расширение ECKEditor = Связка ckeditor + kcfinder (визуальный редактор с бесплатным файловым менеджером) (28.04.2014)
- 0 Yii: Bootstrap tabs, делаем активной вкладку на которую выполняется переход по ссылке (20.03.2014)
- 0 Yii: Доступ к атрибуту модели из файла шаблона (Вызов в шаблоне какого-либо атрибута модели). (17.02.2014)
- 0 Yii: Множественный автокомплит с помощью CJuiAutoComplete (автокомплит нескольких значений в одно поле) (07.02.2014)
- 0 Yii: Фотогалерея через поведение (доработка расширения imagesgallerymanager) (08.03.2016)
- 0 Yii: Установка и настройка Yii-app заготовки приложения от Crisu83 (09.03.2014)
- 0 Twitter Bootstrap Carousel Crossfade (09.09.2013)
2 комментариев
Выделенную строчку наверное стоит заменить на на
if ( $_SERVER['REMOTE_ADDR'] == "127.0.0.1" )
almix: а в случае работы с MAMP 3 надо проверять $_SERVER['REMOTE_ADDR'] == "::1"
http://www.yiiframework.ru/forum/viewtopic.php?f=9&t=20108 - это решение лучше, если конфиги надо хранить в репозитории
almix: да, в этом есть определённый момент удобства. Как я понял, при установки из командной строки будет предложено ввести значения для нескольких переменных настройки, и расширение их пропишет в конфиг, создав его из пустышки config.dist.php. Спасибо, Влад.