Установка Yii2 через Composer и разбор структуры проекта
Пошаговая установка Yii2 basic через Composer: за 15–20 минут вы получите работающее приложение на локальном сервере и поймёте, за что отвечает каждая папка проекта.

За 15–20 минут вы установите Yii2 через Composer, запустите встроенный PHP-сервер и увидите стартовую страницу фреймворка в браузере. Дальше разберёте структуру проекта — какая папка за что отвечает, где лежат контроллеры, куда класть представления и почему в корне нельзя держать конфиги. Инструкция для шаблона Basic (Yii2 версии 2.0.x), с которого начинают почти все.
Что нужно иметь до начала
Проверьте окружение до установки, иначе споткнётесь на первой же команде:
- PHP 7.4 или новее (Yii 2.0.49+ работает и на PHP 8.x). Проверка:
php -vв терминале. - Composer — менеджер зависимостей PHP. Проверка:
composer --version. Если команды нет, установите с getcomposer.org. - Расширения PHP:
pdo,mbstring,openssl,intl. Обычно включены по умолчанию, ноintlчасто выключен — увидите предупреждение при установке. - Доступ к терминалу и права на запись в папку, где будете разворачивать проект.
База данных на этом этапе не нужна — стартовое приложение поднимается без неё.
Установка шаг за шагом
-
Создайте проект командой Composer. Перейдите в папку, где будете держать код, и выполните:
composer create-project --prefer-dist yiisoft/yii2-app-basic my-yii-appComposer скачает фреймворк и все зависимости в папку
my-yii-app. Проверка: команда завершилась без красных строк с fatal, а в конце появилось предложение сгенерировать cookie validation key — согласитесь (yes). -
Перейдите в папку проекта.
cd my-yii-appПроверка: команда
ls(илиdirв Windows) показывает папкиcontrollers,models,views,web. -
Запустите встроенный сервер PHP. Yii2 basic поставляется со скриптом
yiiи умеет подниматься на dev-сервере:php yii serveПо умолчанию сервер стартует на
localhost:8080. Хотите другой порт — добавьте флаг:php yii serve --port=8888.Проверка: в терминале появится строка вроде
Server started on http://localhost:8080/, а терминал останется занятым — так и должно быть. -
Откройте приложение в браузере. Зайдите на
http://localhost:8080.Проверка: откроется стартовая страница с крупным заголовком «Congratulations!» и меню сверху (Home, About, Contact, Login). Если видите её — Yii2 работает.
Чтобы остановить сервер, вернитесь в терминал и нажмите Ctrl + C.
Про запуск через Apache или Nginx
Встроенный сервер годится только для разработки. Для боевого запуска корнем сайта делают папку web/, а не корень проекта — иначе конфиги и исходники окажутся доступны из браузера. Настройка веб-сервера — отдельная тема, здесь мы разбираем только запуск через php yii serve.
Разбор структуры проекта
После установки в корне лежит набор папок. Вот за что отвечает каждая в шаблоне Basic:
| Папка / файл | Назначение |
|---|---|
web/ | Публичный корень. Сюда указывает веб-сервер. Тут лежит index.php — точка входа, и папка assets с опубликованными CSS/JS. |
controllers/ | Контроллеры. Класс SiteController обрабатывает главную, About, Contact. Каждый метод actionXxx — отдельное действие. |
models/ | Модели: формы, Active Record, бизнес-логика. В стартовом проекте — ContactForm, LoginForm, User. |
views/ | Представления (шаблоны). Внутри site/ лежат index.php, about.php и другие, а layouts/main.php — общий каркас страницы. |
config/ | Конфигурация: web.php (веб-приложение), console.php (консоль), db.php (подключение к БД), params.php (параметры). |
runtime/ | Логи, кеш, временные файлы. Генерируется автоматически, в Git не коммитится. |
vendor/ | Зависимости Composer, включая сам фреймворк. Не редактируется вручную, в Git не коммитится. |
assets/ | Регистрация ресурсов (asset bundles) — какие CSS и JS подключать. Не путать с web/assets. |
yii | Консольный скрипт. Через него запускают миграции, dev-сервер и свои команды. |
Ключевая идея структуры Yii2: код и публичная папка разделены. В браузер попадает только содержимоеweb/. Всё остальное — контроллеры, конфиги, модели — лежит выше корня сайта и снаружи недоступно. Нарушите это разделение — отдадите миру пароль от базы вconfig/db.php.
Как связаны части при запросе
Когда вы открываете /site/about, происходит цепочка:
- Запрос попадает в
web/index.php— единственную точку входа. - Приложение по маршруту находит
SiteControllerи методactionAbout. - Метод рендерит представление
views/site/about.php, обёрнутое вviews/layouts/main.php. - Готовый HTML уходит в браузер.
Это стандартная MVC-схема*: контроллер получает запрос, дёргает модель за данными, отдаёт результат в представление.
Если не получилось
command not found: composer— Composer не установлен или не в PATH. Скачайте установщик с getcomposer.org и повторите проверкуcomposer --version.PHP extension intl is requiredпри create-project — не включено расширениеintl. Найдите вphp.iniстроку;extension=intl, уберите точку с запятой, перезапустите терминал.- Белый экран или ошибка 500 вместо стартовой страницы — чаще всего нет прав на запись в
runtime/иweb/assets/. Выдайте права: на Linux/macOSchmod -R 777 runtime web/assets(для локальной разработки допустимо, в проде так не делают). Address already in useприphp yii serve— порт 8080 занят другим процессом. Запустите на другом порту:php yii serve --port=8888.- Стартовая страница открывается, но CSS не подгрузился — не опубликовались ассеты. Удалите содержимое
web/assets/(кроме.gitignore) и обновите страницу — Yii сгенерирует их заново.
Что делать дальше
Приложение работает — теперь подключите базу данных. Пропишите доступы в config/db.php, создайте первую миграцию командой php yii migrate/create init_table и примените её через php yii migrate. После этого имеет смысл посмотреть на генератор кода Gii (встроен в basic-шаблон, включается в конфиге для dev-окружения) — он создаёт модели и CRUD-контроллеры по таблицам. Актуальный синтаксис консольных команд и параметры конфигов сверяйте с официальным руководством по вашей версии Yii 2.0.x.
* MVC (Model-View-Controller) — разделение приложения на три роли: модель хранит данные и логику, представление отвечает за вывод, контроллер связывает их и обрабатывает запросы пользователя.
Создатель презентаций: Структура и текст каждого слайда: заголовки-утверждения, одна мысль на слайд, заметки докладчику.
Спросить за 150 ₽Источники: Yii 2.0 Definitive Guide — Installing Yii, Yii 2.0 Guide — Application Structure Overview
Частые вопросы
Чем отличается шаблон Basic от Advanced?
У меня PHP 8.2, а инструкция про 7.4 — всё сломается?
Нужно ли устанавливать веб-сервер, чтобы запустить проект?
Я запустил php yii serve, но браузер пишет, что страница недоступна.
Какие папки не нужно коммитить в Git?
Где менять параметры подключения к базе данных?
Материал носит информационный характер и подготовлен редакцией «Агентуры». Он не является офертой, рекламой или индивидуальной консультацией. Упомянутые продукты, компании и торговые знаки принадлежат их правообладателям. Перед принятием решений, влекущих юридические или финансовые последствия, обратитесь к профильному специалисту.