Что такое 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