Как установить Symfony и запустить первый проект
Пошаговая установка Symfony через официальный установщик и Composer: от проверки PHP до первой страницы в браузере. На весь процесс уйдёт около 20 минут.

К концу этой инструкции у вас будет работающий проект Symfony 7.x, открывающийся в браузере по адресу http://localhost:8000, с готовой структурой каталогов и первым маршрутом, который отдаёт вашу страницу. На всё уйдёт минут двадцать, если PHP и Composer уже стоят, и минут сорок, если их ещё нет.
Symfony 7.0 вышла в ноябре 2023 года и требует PHP 8.2 или новее. Дальше всё пишу под эту связку. Если у вас PHP 8.1 — Symfony 6.4 LTS поставится, но команды и структура почти те же.
Что нужно иметь до начала
Проверьте это до того, как копировать команды. Иначе застрянете на середине.
- PHP 8.2+ с расширениями
ctype,iconv,pdo,tokenizer. Проверка:php -vпокажет версию,php -m— список расширений. - Composer — менеджер зависимостей PHP. Проверка:
composer --version. - Git — Symfony использует его для инициализации репозитория. Проверка:
git --version. - Опционально — Symfony CLI: удобный локальный сервер и проверки. Без него тоже можно, покажу оба пути.
Если php -v выдаёт «command not found» — PHP не установлен или не в PATH. На macOS ставится через Homebrew (brew install php), на Ubuntu — через apt install php8.2-cli, на Windows проще всего взять сборку с windows.php.net и добавить папку в PATH.
Шаг 1. Проверьте окружение через Symfony CLI
Установите Symfony CLI по инструкции с symfony.com — там есть скрипт под каждую ОС. После установки выполните:
symfony check:requirementsПроверка: команда выведет список требований. Если увидите строку «Your system is ready to run Symfony projects» — окружение в порядке. Красные строки означают недостающие расширения PHP, их нужно доустановить, прежде чем идти дальше.
Если Symfony CLI ставить не хотите
Пропустите этот шаг. Composer сам проверит зависимости при создании проекта и откажется ставить пакеты, если версия PHP не подходит. Но локальный сервер тогда придётся запускать встроенным в PHP (покажу на шаге 4).
Шаг 2. Создайте проект
Есть два скелета. Полный веб-скелет тянет за собой шаблонизатор Twig, роутинг и профилировщик — годится для сайта с HTML-страницами. Минимальный подходит для API или микросервиса, лишнего в нём нет.
Полный веб-проект:
composer create-project symfony/skeleton:"7.*" my_project
cd my_project
composer require webappПакет webapp — это метапакет*, который доустанавливает Twig, форму, валидатор и всё, что нужно для классического сайта. Если делаете API, второй строкой его не ставьте — оставьте голый скелет.
Проверка: после create-project в папке my_project появятся каталоги src, config, public и файл composer.json. Composer выведет «What's next?» — это нормально.
Шаг 3. Разберитесь со структурой
Три каталога, в которые вы будете заглядывать чаще всего:
| Каталог/файл | Что внутри |
|---|---|
src/ | Ваш PHP-код: контроллеры, сервисы, сущности |
config/ | Конфигурация: маршруты, сервисы, пакеты |
public/ | Точка входа index.php и публичные файлы |
templates/ | Шаблоны Twig (появится после установки webapp) |
.env | Переменные окружения, включая строку подключения к БД |
Веб-сервер должен смотреть на public/, а не на корень проекта. Это частая ошибка при выкладке на хостинг: если сервер отдаёт корень, наружу утекает .env и весь код.
Шаг 4. Запустите локальный сервер
Если поставили Symfony CLI — из папки проекта:
symfony server:startСервер поднимется на https://127.0.0.1:8000 с локальным HTTPS. Флаг -d запустит его в фоне.
Без CLI используйте встроенный сервер PHP, указав корнем папку public:
php -S localhost:8000 -t public/Проверка: откройте http://localhost:8000 в браузере. Должна появиться приветственная страница Symfony с версией и списком «Your first steps». Если поставили только голый скелет без webapp — вместо страницы будет ошибка 404, это ожидаемо, страницы приветствия там нет.
Шаг 5. Создайте первый маршрут
Проверим, что вы действительно можете отдавать свою страницу. Создайте файл src/Controller/HelloController.php:
<?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
{
// Маршрут привязан к URL /hello через атрибут
#[Route('/hello', name: 'app_hello')]
public function index(): Response
{
return new Response('<h1>Привет из Symfony</h1>');
}
}Атрибуты маршрутов (#[Route]) работают начиная с PHP 8.0. В Symfony 6.4 и 7.x это способ по умолчанию — отдельный файл с маршрутами создавать не нужно.
Проверка: откройте http://localhost:8000/hello — увидите заголовок «Привет из Symfony». Если маршрут не находится, проверьте список зарегистрированных маршрутов:
php bin/console debug:routerSymfony не заставляет держать все маршруты в одном месте: атрибут над методом контроллера — это и есть регистрация. Меньше файлов, ближе URL к коду, который его обрабатывает.
Если не получилось
- «Your requirements could not be resolved... php requires 8.2» — у вас более старый PHP. Либо обновите его, либо ставьте Symfony 6.4:
composer create-project symfony/skeleton:"6.4.*" my_project. - «Could not open input file: bin/console» — вы запускаете команду не из корня проекта. Сделайте
cd my_project. - Страница 500 с упоминанием APP_SECRET или .env — не хватает файла
.env. Он создаётся автоматически приcreate-project; если удалили, скопируйте из.env.distпри его наличии или пересоздайте проект. - Порт 8000 занят — при встроенном сервере укажите другой:
php -S localhost:8001 -t public/. У Symfony CLI сервер сам подберёт свободный порт. - Composer работает медленно и падает по памяти — увеличьте лимит:
COMPOSER_MEMORY_LIMIT=-1 composer require webapp.
Что делать дальше
Проект запущен — дальше идут вещи, которые превращают его в приложение:
- Подключите базу данных: отредактируйте
DATABASE_URLв.env, поставьтеcomposer require symfony/orm-pack, создайте первую сущность черезphp bin/console make:entity(пакет MakerBundle ставится черезcomposer require --dev symfony/maker-bundle). - Освойте профилировщик: в dev-режиме внизу каждой страницы висит панель отладки со временем запросов и SQL — это первое, куда смотреть при тормозах.
- Прочитайте официальный гайд «Create your first page» — он развивает шаг 5 до работы с шаблонами Twig.
Перед выкладкой на прод переключите окружение: в .env смените APP_ENV на prod и выполните composer install --no-dev --optimize-autoloader. Настройка боевого веб-сервера и деплой — отдельная тема, здесь мы дошли только до рабочего локального проекта.
* Метапакет — пакет, который сам не содержит кода, а служит списком зависимостей: устанавливая его, вы одной командой тянете набор связанных библиотек.
Проверка рекламы на риски: Что в макете вызовет вопросы ФАС: превосходные степени, сравнения, обещания результата, маркировка.
Спросить за 40 ₽Источники: Symfony — Installing & Setting up the Framework, Symfony — Create your first page
Частые вопросы
У меня PHP 8.1, а не 8.2. Symfony вообще поставится?
Обязательно ли ставить Symfony CLI?
Чем skeleton отличается от webapp?
Открыл localhost:8000, а вместо приветствия ошибка 404. Это поломка?
Composer падает с ошибкой нехватки памяти. Что делать?
Как понять, что проект готов к выкладке на прод?
Материал носит информационный характер и подготовлен редакцией «Агентуры». Он не является офертой, рекламой или индивидуальной консультацией. Упомянутые продукты, компании и торговые знаки принадлежат их правообладателям. Перед принятием решений, влекущих юридические или финансовые последствия, обратитесь к профильному специалисту.