Manuals
RU EN

Сервер · 64

Composer на Windows локально

Сервер 5 мин чтения

Composer нужен, когда в корне проекта есть composer.json и без vendor/ скрипт не встанет. Многие готовые архивы Microscript уже содержат зависимости или вовсе не используют Composer — тогда этот мануал можно закрыть. Если в readme написано composer install — читайте дальше.

На Windows грабля одна: Composer должен видеть тот же PHP 8, что и ваш локальный сервер, а не случайный php из PATH от старого XAMPP.

PHP в PATH

Узнайте, где лежит php.exe стека MicroServer (или OpenServer). Добавьте каталог в PATH пользователя либо вызывайте полный путь. Проверка в новом cmd/PowerShell:

php -v
php -m

Должна быть ветка 8.x и модули из требований. Если php не находится — Composer-Setup тоже может поставить «не тот» интерпретатор.

Установка Composer

  1. Скачайте официальный Composer-Setup для Windows.
  2. Укажите путь к php.exe нужной версии.
  3. Дождитесь установки, откройте новый терминал.
  4. composer -V — должна показаться версия.

Альтернатива без установщика: composer.phar рядом с проектом и запуск php composer.phar install. На локалке установщик удобнее.

install в проекте

cd D:\MicroServer\www\project.loc
composer install

Для продакшен-подобной установки без dev-пакетов:

composer install --no-dev --optimize-autoloader

Появится каталог vendor/ и автозагрузка. Document root хоста не должен «случайно» отдавать лишнее из vendor без нужды — обычно php туда не кладут как публичную точку входа.

Частые ошибки

  • php не является командой — PATH.
  • Your requirements could not be resolved — PHP ниже constraint в composer.json; обновите версию.
  • Нет zip/openssl/mbstring — доставьте расширения к PHP.
  • Прокси/antivirus режет packagist — временно другая сеть или зеркало.
  • memory exhausted — COMPOSER_MEMORY_LIMIT=-1 или выше memory_limit.

Не коммитьте сюда секреты. auth.json с токенами держите вне публичных копий.

vendor в архиве бэкапа. Иногда проще включить vendor в перенос, чем гонять composer на слабом shared без SSH. На VDS с SSH — composer install на месте нормален. См. перенос.

Связка с локальным сервером

Хост проекта: *.loc. Стек: MicroServer. Альтернатива Денверу: здесь. После install откройте сайт и проверьте, что автозагрузка подхватилась — иначе 500 с Class not found: ошибка 500.

На VDS

Те же команды под Linux-пользователем сайта. PHP-CLI той же версии, что FPM. Без доступа SSH на shared Composer часто недоступен — тогда зависимости должны приехать архивом.

Подбор сервера: VDS, root — VPS с root. Установка продукта целиком: установка.

Обновление пакетов

composer update без нужды на боевом не запускайте — уедете на мажорные версии и сломаете скрипт. Обновляйте по инструкции релиза продукта. Локально можно экспериментировать на копии базы: бэкап перед апдейтом.

Какой PHP видит Composer

Частая ловушка на Windows: в PATH торчит C:\xampp\php или старый OpenServer, а сайт в MicroServer крутится на другом php.exe. Composer ставит пакеты, ориентируясь на platform php из CLI. В итоге composer install проходит, а веб орёт на синтаксис или отсутствующий модуль.

Проверка:

where php
php -v
composer config --list | findstr php

Если where показывает не тот путь — поправьте PATH или вызывайте:

C:\path\to\php.exe C:\ProgramData\ComposerSetup\bin\composer.phar install

В MicroServer путь к PHP смотрите в каталоге установки сервера. Документация стека: локальный сервер.

composer.json и lock

composer.lock фиксирует версии. На проде и локалке ставьте по lock через install, не через update. Иначе локально «у меня работает» на других минорных версиях библиотек, а на VDS — нет.

Если lock нет в архиве продукта, а json есть — install всё равно создаст lock. Сохраните его для повторяемых деплоев. Не правьте vendor руками: следующий install затрёт.

Ошибки SSL и packagist

На корпоративных Windows иногда режется SSL до repo.packagist.org. Симптом: curl error 60 / certificate problem. Лечится обновлением CA-бандла PHP или временно другой сетью, не отключением verify-peer «навсегда» в глобальном конфиге.

Антивирус с https-scan тоже иногда ломает composer. Если ошибка плавает — исключите каталог проекта и php.exe из проверки на время установки зависимостей.

Когда Composer не нужен

Многие поставки Microscript — «распаковал, создал БД, открыл установщик». Нет composer.json — не ставьте Composer «для галочки». Лишняя сущность на shared без SSH всё равно не пригодится.

Если в комплекте уже лежит vendor — не гоните install поверх без причины. Исключение: в readme явно сказано обновить зависимости после перехода на PHP 8.2.

Права и vendor на Linux после копирования с Windows

Перенесли проект с Windows на VDS архивом — следите за окончаниями строк и правами. vendor должен читаться пользователем PHP-FPM. Исполняемые бинарники в vendor/bin иногда теряют +x — для веб-скрипта это редко критично, для CLI-утилит — да.

Перенос целиком: перенос скрипта. Если после выкладки Class not found — автозагрузчик не найден или vendor не залили: ошибка 500.

Практический порядок для локалки

  1. Подняли хост project.loc — vhost.
  2. Распаковали архив скрипта.
  3. Проверили php -v той же ветки 8.x.
  4. При наличии composer.json — composer install.
  5. Создали БД — phpMyAdmin.
  6. Установщик — установка.

На VDS с root порядок тот же, только бинарник php другой и PATH linux-овый: VPS с root, VDS. Альтернатива старого Денвера, если искали его под Composer: Денвер PHP 8.

Если composer install скачал пакеты, а сайт всё равно Class not found — проверьте, что document root смотрит в тот каталог, где лежит vendor, и что в index/bootstrap есть require autoload. Иногда архив продукта кладёт точку входа в public/, а вы открываете родительский каталог. На локалке это лечится правильной папкой хоста: *.loc. Не удаляйте vendor «для чистоты» перед выкладкой на shared без SSH — обратно не соберёте. Лучше архивируйте вместе с ним при переносе. Перед экспериментами с update на копии базы: бэкап, требования PHP: требования.

Частые вопросы

Composer на windows локально?

Composer ставит пакеты скрипта на локалке так же, как на VDS.

Сколько времени занимает «Composer на Windows локально»?

Ориентир по тексту мануала — около 5 мин. На практике зависит от хостинга и подготовки базы.

Нужен ли отдельный сервер?

Для большинства скриптов достаточно хостинга или VDS с PHP и MySQL. Подбор сервера — в разделе VDS и требованиях к PHP/MySQL.

Openserver альтернатива php 8?

Разбор рядом в мануале по этому запросу. openserver альтернатива php 8

Локальный сервер windows php 8 mysql?

Разбор рядом в мануале по этому запросу. локальный сервер windows php 8 mysql

Раздел
Денвер и локальный сервер

Локальный стек Windows для отладки скриптов до выкладки на VDS.