Начало работы

Установка

Новый проект Winter создаётся одной командой Composer. Она разворачивает стартовый каркас, генерирует ключ и готова к запуску — сервер поднимается сразу.

Требования

Требование Значение
PHP 8.4 или выше
Composer 2.x
Расширения (обязательно) ext-pcntl, ext-posix, ext-fileinfo

Опциональные расширения ставятся под конкретные задачи:

Расширение Зачем
ext-pdo Доступ к базе данных
ext-simplexml Разбор XML-тел запросов
ext-bcmath, ext-decimal Приведение к точным числовым типам в привязке параметров
ext-swoole Рантайм Swoole (корутины, пул соединений)
ext-shmop Разделяемая память для доставки полезной нагрузки в Swoole-режиме

Проверка окружения

Быстро проверить версию и расширения: php -v и php -m.

Создание проекта

bash
composer create-project flytachi/winter my-app
cd my-app

create-project разворачивает стартовый пакет и запускает хук post-create-project-cmd, который:

  1. делает storage/ доступной для записи (chmod -R 777 storage);
  2. вызывает php call cfg init — приводит проект в рабочее состояние.

Что делает cfg init

  • переписывает name в composer.json на project/<папка>, чистит authors и keywords;
  • копирует .env из шаблона;
  • генерирует свежий 64-символьный WINTER_KEY;
  • кладёт stub-мету для PhpStorm.

После этого проект готов — открывайте main/MainController.php и пишите код.

Первый запуск

bash
php call run dev

Сервер поднимется на http://0.0.0.0:8000 (встроенный сервер PHP). Откройте адрес в браузере — увидите ответ стартового контроллера.

Swoole

php call run dev использует встроенный сервер PHP и не требует Swoole. Для рантайма Swoole (php call run) поставьте расширение: pecl install swoole. Подробнее — в CLI → run.

Клонировали существующий проект?

На свежей машине после git clone:

bash
composer install          # зависимости
chmod -R 777 storage      # права на storage
chmod +x call             # бинарник CLI исполняемый

php call cfg env -i       # создать .env, если его нет
php call cfg key -g       # перегенерировать WINTER_KEY
php call storage init     # создать storage/{cache,logs}

php call run dev          # http://0.0.0.0:8000

Дальше