Установка Symfony и запуск проекта: что нужно до начала
Пошаговый запуск нового проекта на Symfony 7: от проверки версии PHP до первой страницы в браузере. Что установить заранее, чтобы не упереться в ошибку на середине.

За 15–20 минут у вас будет работающий проект на Symfony 7.x, открывающийся в браузере по адресу вроде http://127.0.0.1:8000. Дальше в этот скелет можно добавлять контроллеры, маршруты и шаблоны. Но половина проблем у новичков случается не в самом Symfony, а до него: не та версия PHP, не установлен Composer, нет нужных расширений. Поэтому сначала — что должно стоять на машине, и только потом команды.
Что нужно иметь до начала
Symfony 7.x требует PHP 8.2 или новее. Если у вас PHP 8.1 или ниже — установщик не даст создать проект и выдаст ошибку о несовместимости. Проверьте версию до всего остального:
php -v
В первой строке должна быть версия 8.2.x или выше. Если команда не найдена — PHP не установлен или не в PATH.
Полный список того, что понадобится:
- PHP 8.2+ с включёнными расширениями
ctype,iconv,mbstring,tokenizer,xml. В большинстве сборок PHP они уже есть. - Composer — менеджер зависимостей PHP. Проверка:
composer -Vдолжна вывести номер версии. - Symfony CLI (необязательно, но сильно упрощает жизнь) — свой веб-сервер для разработки и проверка требований. Проверка:
symfony version. - Git — Composer иногда тянет пакеты из репозиториев.
Расширения проверяются командой php -m — она выводит список подключённых модулей. Если чего-то нет, доустановите через пакетный менеджер вашей ОС или раскомментируйте строку в php.ini.
Symfony CLI не обязателен для работы фреймворка, но именно он проверяет окружение одной командой и поднимает локальный сервер без настройки Nginx. Для первого проекта берите его.
Проверить окружение одной командой
Если поставили Symfony CLI, запустите:
symfony check:requirements
Команда пройдётся по версии PHP, расширениям и настройкам и покажет, чего не хватает. Это надёжнее, чем ловить ошибки уже во время установки.
Шаги установки
-
Создайте проект. Через Symfony CLI для полноценного веб-приложения:
symfony new my_project --webappФлаг
--webappставит расширенный набор пакетов: Twig, Doctrine, формы, валидацию — то, что нужно для сайта. Без флага получите минимальный скелет (удобно для API или микросервиса).Если Symfony CLI не установлен, то же самое делает Composer:
composer create-project symfony/skeleton my_project cd my_project composer require webappПроверка: в консоли появится строка вроде
[OK] Your project is now ready in /path/to/my_project, а в текущей папке — каталогmy_projectс файлами внутри. -
Перейдите в папку проекта (если создавали через
symfony new, зайдите вручную):cd my_projectПроверка: команда
ls(илиdirв Windows) показывает папкиsrc,config,public,vendorи файлcomposer.json. -
Запустите локальный сервер. Через Symfony CLI:
symfony server:startЧтобы сервер работал в фоне и не занимал окно терминала, добавьте
-d:symfony server:start -d. Остановить фоновый сервер —symfony server:stop.Без Symfony CLI можно поднять встроенный PHP-сервер, указав папку
publicкак корень:php -S 127.0.0.1:8000 -t publicПроверка: в консоли появится адрес, по которому доступен сайт — обычно
http://127.0.0.1:8000. -
Откройте адрес в браузере.
Проверка: откроется приветственная страница Symfony с логотипом и номером версии фреймворка. Это значит, что проект запущен.
Создать первую страницу
Чтобы убедиться, что маршрутизация работает, сгенерируйте контроллер (нужен пакет maker-bundle, он входит в --webapp):
php bin/console make:controller HelloController
Команда создаст файл src/Controller/HelloController.php с маршрутом /hello. Откройте http://127.0.0.1:8000/hello — увидите стандартную страницу, сгенерированную мейкером. Сам маршрут задан атрибутом над методом:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class HelloController extends AbstractController
{
// Маршрут задаётся атрибутом прямо над методом
#[Route('/hello', name: 'app_hello')]
public function index(): Response
{
return new Response('Привет из Symfony');
}
}
Замените тело метода на свой ответ, обновите страницу — текст изменится.
Ключевые каталоги проекта
Чтобы не искать наугад, где что лежит:
| Путь | Что внутри |
|---|---|
public/ | Корень сайта, тут index.php — единственная точка входа. Именно эту папку указывают веб-серверу. |
src/ | Ваш PHP-код: контроллеры, сущности, сервисы. |
config/ | Конфигурация: маршруты, сервисы, пакеты. |
templates/ | Шаблоны Twig (появляется при установке --webapp). |
var/ | Кеш и логи. При странном поведении первым делом чистят кеш. |
vendor/ | Зависимости, установленные Composer. Руками не трогают. |
.env | Переменные окружения: режим, строка подключения к БД. |
Если не получилось
Your requirements could not be resolved to an installable set of packagesи упоминаниеphp. Версия PHP ниже 8.2. Проверьтеphp -v, обновите PHP.the requested PHP extension mbstring is missing(или ctype, xml и т.п.). Не подключено расширение. Установите его пакетным менеджером ОС и перезапустите терминал, затем повторитеphp -m.command not found: symfonyилиcomposer. Инструмент не установлен или не вPATH. Для установки скелета без Symfony CLI используйте вариант черезcomposer create-project.- Страница не открывается, сервер молчит. Порт 8000 занят другим процессом. Запустите на другом порту:
symfony server:start --port=8001или укажите его вphp -S 127.0.0.1:8001 -t public. - Открывается голый листинг файлов или ошибка 404 на всё. Веб-сервер смотрит не в
public/, а в корень проекта. Корнем должна быть только папкаpublic.
Что делать дальше
Проект запущен — дальше настраивают базу. Строку подключения задают в .env (переменная DATABASE_URL), после чего сущности и миграции создают через make:entity и doctrine:migrations. Прежде чем углубляться, откройте профайлер: в режиме разработки Symfony показывает внизу страницы панель отладки с запросами, временем и логами — это главный инструмент, когда что-то идёт не так. Настройка боевого окружения (переключение APP_ENV на prod, прогрев кеша, Nginx) — отдельная тема, здесь мы её не трогаем.
Проверка рекламы на риски: Что в макете вызовет вопросы ФАС: превосходные степени, сравнения, обещания результата, маркировка.
Спросить за 40 ₽Источники: Symfony — Installing & Setting up the Framework, Symfony CLI — Download & Documentation
Частые вопросы
А если у меня установлен PHP 8.1, обязательно обновлять?
Обязательно ли ставить Symfony CLI, или хватит Composer?
Чем различаются symfony new с флагом --webapp и без него?
Что делать, если после запуска сервера страница не открывается?
Нужен ли отдельный веб-сервер вроде Nginx для запуска?
Материал носит информационный характер и подготовлен редакцией «Агентуры». Он не является офертой, рекламой или индивидуальной консультацией. Упомянутые продукты, компании и торговые знаки принадлежат их правообладателям. Перед принятием решений, влекущих юридические или финансовые последствия, обратитесь к профильному специалисту.