Как обновить зависимости в Composer: полный гайд на 2026 год
Зачем обновлять зависимости в Composer
Каждый PHP-проект зависит от внешних пакетов: фреймворков, библиотек, утилит. Обновление зависимостей гарантирует доступ к исправлениям уязвимостей, новым возможностям и совместимости с актуальными версиями PHP. Однако без понимания механизмов Composer легко нарушить стабильность приложения.
Команда composer update — не просто «скачать новое». Она пересчитывает версии всех пакетов на основе правил из composer.json и обновляет composer.lock.
Файлы composer.json и composer.lock: в чём разница
Файл composer.json описывает зависимости проекта: имена пакетов и допустимые диапазоны версий. Например, запись "guzzlehttp/guzzle": "^7.0" разрешает установку любой версии 7.x, но не 8.0.
Файл composer.lock, в свою очередь, фиксирует конкретные версии всех установленных библиотек. Он гарантирует, что все разработчики и серверы используют одинаковый набор пакетов. При установке зависимостей на новой машине Composer читает именно этот файл, а не composer.json.
Как правильно обновить все зависимости
Команда composer update пересчитывает зависимости по правилам из composer.json и обновляет composer.lock. Выполняется она в корневом каталоге проекта через командную строку.
Важно: запускать composer update в production-среде — плохая практика. Лучше обновлять зависимости локально или в CI-среде, тестируя совместимость, и затем коммитить обновлённый composer.lock в репозиторий.
Обновление конкретной зависимости
Чтобы обновить только один пакет и одновременно зафиксировать новую версию в composer.json, используйте composer require имя/пакета. Эта команда добавит или заменит запись в composer.json и обновит composer.lock.
Пример: composer require guzzlehttp/guzzle:^7.8 установит последнюю стабильную версию в рамках 7.x и обновит конфигурацию проекта. Это предпочтительнее ручного редактирования composer.json.
Учёт версии PHP при обновлении
Composer учитывает версию PHP, установленную в системе. Но на хостинге она может отличаться от локальной. Чтобы избежать конфликта версий, укажите целевую версию явно: composer config platform.php 8.2.
Если нужно временно проигнорировать ограничения PHP (например, для тестирования), используйте флаг --ignore-platform-req=php+. Это отключает проверку совместимости с текущей версией PHP при установке.
Папка vendor и автозагрузка
Все зависимости устанавливаются в папку vendor в корне проекта. Внутри неё находится файл autoload.php — точка входа для автозагрузки классов. После любого обновления Composer перегенерирует этот файл.
Никогда не коммитьте папку vendor в Git. Вместо этого всегда включайте composer.lock — он содержит полную информацию о версиях, а установка происходит через composer install на каждой машине.
Центральный репозиторий и источник пакетов
Composer по умолчанию получает пакеты из Packagist — центрального репозитория PHP-библиотек. Большинство open-source решений, включая Laravel, Symfony и Guzzle, публикуются именно там.
Если проект использует приватные пакеты (например, из корпоративного репозитория GitHub), их источники нужно добавить в секцию repositories файла composer.json. Это не влияет на логику обновления, но расширяет доступные источники зависимостей.


