До основного вмісту

Composer: встановлення та управління залежностями PHP

PHP · 19.04.2026 · 4 хв читання
Ілюстрація до статті «Composer: встановлення та управління залежностями PHP»

Що таке Composer і навіщо він потрібен

Composer — стандартний менеджер залежностей для PHP. Він дозволяє підключати сторонні бібліотеки (Laravel, Symfony, Guzzle, PHPUnit і тисячі інших) однією командою, керувати версіями пакетів та автоматично підключати всі класи через автозавантажувач.

Встановлення Composer на Ubuntu/Debian

# Завантажуємо інсталятор
curl -sS https://getcomposer.org/installer -o /tmp/composer-setup.php

# Перевіряємо хеш (актуальний хеш на getcomposer.org/download)
php /tmp/composer-setup.php --install-dir=/usr/local/bin --filename=composer

# Перевіряємо встановлення
composer --version
Для глобального встановлення (доступне всім користувачам) розміщуйте composer у /usr/local/bin/. Для встановлення лише для поточного користувача — у ~/.local/bin/.

Оновлення Composer

composer self-update
# Відкат до попередньої версії:
composer self-update --rollback

Створення нового проєкту

# Новий проєкт Laravel:
composer create-project laravel/laravel myapp

# Новий проєкт Symfony:
composer create-project symfony/skeleton myapp

Основні команди Composer

КомандаОпис
composer installВстановити залежності з composer.lock
composer updateОновити всі залежності до найновіших версій
composer require vendor/packageДодати новий пакет
composer remove vendor/packageВидалити пакет
composer dump-autoload -oПерегенерувати оптимізований автозавантажувач
composer showПерелік встановлених пакетів

Структура composer.json

{
    "name": "mycompany/myapp",
    "require": {
        "php": "^8.1",
        "guzzlehttp/guzzle": "^7.0",
        "monolog/monolog": "^3.0"
    },
    "require-dev": {
        "phpunit/phpunit": "^10.0"
    },
    "autoload": {
        "psr-4": {
            "App\\": "src/"
        }
    }
}

Оптимізація для production

На production-сервері завжди запускайте Composer з оптимізацією автозавантажувача:

composer install --no-dev --optimize-autoloader --no-interaction
# або
composer dump-autoload --optimize --no-dev
Ніколи не запускайте composer update на production — це здатне зламати застосунок оновленням несумісних версій. Оновлюйте залежності локально, фіксуйте composer.lock у git і деплойте через composer install.

Робота без інтернету (--prefer-dist)

composer install --prefer-dist --no-scripts

Реальні помилки Composer

Requirements could not be resolved

Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - Root composer.json requires php-ext-intl but it is not present.

Composer перевіряє платформні вимоги за тим PHP, з-під якого сам запущений (зазвичай це CLI), а не за тим, що реально працює в PHP-FPM на проді. Встановили розширення лише для FPM — Composer усе одно відмовиться працювати, доки його не побачить CLI-версія.

Allowed memory size exhausted під час install

PHP Fatal error:  Allowed memory size of 1610612736 bytes exhausted (tried to allocate 20480 bytes) in phar:///usr/local/bin/composer/src/Composer/DependencyResolver/Solver.php
Check https://getcomposer.org/doc/articles/troubleshooting.md#memory-limit-errors for more info on how to handle out of memory errors.

Сам Composer — це PHP-скрипт, і на нього діє той самий memory_limit, що й на решту коду. Розв'язання проєкту з великим деревом залежностей може потребувати більше пам'яті, ніж дозволено за замовчуванням.

composer.lock застарів

Warning: The lock file is not up to date with the latest changes in composer.json. You may be getting outdated dependencies. It is recommended that you run "composer update" or "composer update <package name>".

Це попередження, а не відмова: composer install усе одно відпрацює за старим composer.lock. Небезпека в іншому — на CI це попередження легко пропустити в потоці логів, і на прод поїдуть версії пакетів, що не збігаються з тим, що реально тестували.

Коли команди з цієї статті не підходять

  • Розробка ведеться без доступу до packagist.org (закритий контур, ізольована мережа) — потрібен приватний дзеркальний репозиторій (Satis, Private Packagist), звичайні команди require просто зависнуть в очікуванні мережі.
  • Composer CLI та версія PHP у продакшн-FPM розходяться — платформна перевірка під час встановлення пройде, а код на проді впаде через несумісний синтаксис чи відсутню функцію.
  • Прапор --ignore-platform-reqs «лікує» помилку вимог, але переносить проблему несумісності прямо на прод — використовуйте його лише свідомо й тимчасово.

Перевірка результату

# Зняти повну діагностику оточення Composer
composer diagnose

# Перевірити синтаксис і коректність composer.json
composer validate --strict

# Збільшити ліміт пам'яті лише для цього запуску
COMPOSER_MEMORY_LIMIT=-1 composer install

composer validate --strict знаходить не лише синтаксичні помилки JSON, а й стилістичні проблеми на кшталт незафіксованих версій залежностей — корисно проганяти його перед кожним релізом.

Чи була стаття корисною?
← Назад до бази знань Поставити питання підтримці