Как установить и использовать Composer в Ubuntu: гайд

    Команда Simple-Server
    03.06.2026
    12 мин

    Материал подготовлен командой Simple-Server для администраторов VPS и выделенных серверов. Команды и пути проверяйте на тестовой машине перед production.

    Кратко о задаче

    Рекомендуется сперва обновить список существующих репозиториев APT:

    После этого потребуется установить пакеты, которые обеспечат дальнейшую загрузку и использование Composer:

    sudo apt install curl php-cli unzip -y
    • curl. Утилита для выполнения HTTP-запросов.
    • php-cli. Интерпретатор для запуска PHP-скриптов.
    • unzip. Утилита для распаковки ZIP-архивов.

    Флаг -y необходим для положительного ответа на все вопросы во время установки.

    Установка Composer выполняется автоматически с помощью PHP-скрипта, который создали сами разработчики менеджера зависимостей. Таким образом, установка Composer сводится к загрузке и запуску этого скрипта.

    Загрузить установочный скрипт можно с официального сайте Composer, сделав соответствующий HTTP-запрос:

    curl -sS https://getcomposer.org/installer -o composerInstall.php
    • Флаг -sS указывает на запуск curl в тихом режиме, когда не выводятся никакие сообщения, кроме ошибок.

    • Флаг -o указывает на директорию, в которую будет помещен загруженный файл, а также его имя, под которым он будет сохранен в системе.

    Флаг -sS указывает на запуск curl в тихом режиме, когда не выводятся никакие сообщения, кроме ошибок.

    Флаг -o указывает на директорию, в которую будет помещен загруженный файл, а также его имя, под которым он будет сохранен в системе.

    Чтобы убедиться, что файл действительно был загружен, можно проверить содержимое текущей директории:

    В консольном терминале появится список файлов, среди которых будет установочный скрипт:

    composerInstall.php  resize.log  snap****

    В этом руководстве выполняется глобальная установка Composer. То есть менеджер зависимостей будет запускаться в любом каталоге без необходимости явного указания абсолютного пути.

    Для глобальной установки Composer нужно выполнить загруженный PHP-скрипт, передав ему несколько дополнительных параметров:

    php composerInstall.php --install-dir=/usr/local/bin --filename=composer
    • Флаг --install-dir указывает на директорию, в которую будет установлен Composer.

    • Флаг --filename указывает на имя бинарного файла, к которому можно будет обращаться из терминала консоли.

    Флаг --install-dir указывает на директорию, в которую будет установлен Composer.

    Флаг --filename указывает на имя бинарного файла, к которому можно будет обращаться из терминала консоли.

    В данном случае Composer устанавливается в системную директорию для бинарных файлов — /usr/local/bin.

    После выполнения скрипта установки в консольном терминале появится результат его работы:

    All settings correct for using Composer Downloading... Composer (version 2.8.2) successfully installed to: /usr/local/bin/composer Use it: php /usr/local/bin/composer

    Так как установочный скрипт больше не нужен, его можно удалить:

    Если попытаться запустить Composer в первый раз:

    То в консольном терминале появится сообщение с вопросом:

    Do not run Composer as root/super user! See https://getcomposer.org/root for details Continue as root/super user [yes]?

    Composer сообщает о том, что его запуск от имени root-пользователя выполняется на свой страх и риск. Таким образом Composer создает предупреждает, но позволяет продолжить работу от имени администратора.

    В рамках этого руководства мы будет работать с Composer как есть, поэтому соглашаемся с вопросом в консольном терминале. После этого в терминале появится стартовое приветствие, а также список возможных опций и команд с их кратким описанием.

    Теперь Composer полностью установлен в систему, а значит его можно использовать для управления зависимостями любых проектов на PHP.**
    **

    Основной файл, через который выполняется управление зависимостями, — composer.json. Внутри него описываются пакеты, необходимые для корректной работы проекта.

    Таким образом, Composer следует подходу Infrastructure as Code (Iac), описывая локальную инфраструктуру проекта через конфигурационный файл, а не через ручное редактирование настроек в каком-либо графическом интерфейсе.

    Тем не менее, Composer позволяет управлять файлом конфигурации не только вручную посредством редактирования его содержимого в текстовом редакторе, но и с помощью команд в консольном терминале — то есть в более интерактивном виде.**
    **

    Использование Composer сопряжено с использованием нескольких базовых команд, каждая из которых в том или ином виде взаимодействует с конфигурационным файлом composer.json:

    • init. Инициализирует проект.

    • require. Подключает пакет.

    • install. Устанавливает зависимости.

    • update. Обновляет пакеты.

    init. Инициализирует проект.

    require. Подключает пакет.

    install. Устанавливает зависимости.

    update. Обновляет пакеты.

    На самом деле Composer имеет намного больше команд, однако именно эти используются чаще всего.

    Предположим, мы работаем над небольшим проектом, который выполняет различные строковые преобразования. Поэтому нам в качестве зависимости нужна некая специфическая библиотека, содержащая ряд функций для изменения содержимого строк.

    В этом руководстве мы будем выполнять общую для многих языков программирования функцию slugify, которая преобразует последовательность слов в одно длинное слово, содержащее только строчные ASCII-символы и дефисы.

    Чаще всего slugify используется для преобразования произвольных заголовков в формат URL-адресов без пробелов.

    Например, заголовок «How to deal with Composer» с помощью функции slugify можно преобразовать в надпись «how-to-deal-with-composer», которая может использовать для URL-адреса страницы руководства по установке — «/blog/php/how-to-deal-with-composer».

    А еще результат функции slugify похож на стиль именования переменных Kebab Case:

    Чтобы не писать эту функцию самостоятельно, мы воспользуемся Composer и найдем соответствующую библиотеку в официальном реестре пакетов, включим ее в список зависимостей и позволим Composer автоматически выполнить ее загрузку, установку и включение в проект.**
    **

    Сперва создадим отдельный каталог для PHP-проекта:

    После чего перейдем в него:

    Здесь будет размещаться как исходный код проекта, так и файлы необходимых зависимостей.

    Чтобы найти необходимую библиотеку, нам потребуется:

    Открыть в браузере страницу упомянутого ранее официального реестра пакетов Composer.

    • Ввести в поиск «slugify».

    Ввести в поиск «slugify».

    • Найти наиболее подходящий пакет исходя из его параметров и описания.

    Найти наиболее подходящий пакет исходя из его параметров и описания.

    Интересно, что в поиске дополнительно выводятся ключевые показатели каждого из доступных пакетов:

    • Количество установок через Composer (справа вверху)

    • Количество звезд на GitHub (справа внизу)

    Количество установок через Composer (справа вверху)

    Количество звезд на GitHub (справа внизу)

    На самом деле есть очевидная закономерность, что более популярные пакеты работают стабильнее, ведь их использует большее число людей.

    В этом руководстве мы будем использовать пакет ocur/slugify. Название пакета (подобно репозиторию на GitHub) содержит имя автора (поставщика) и название библиотеки, разделенных символом косой черты (/).

    Мы можем перейти на страницу пакета, кликнув по его названию, чтобы увидеть больше подробностей о реализации библиотеки. Например, это может быть список зависимостей, описание с примерами кода, бейджи покрытия тестами, тип лицензии и т.п.

    Также стоит обратить внимание на доступные версии пакетов, которые необходимо указывать во время установки зависимости.

    Таким образом можно искать и подбирать подходящие пакеты для PHP-проекта, которые впоследствии будут использоваться в качестве зависимости для предоставления специфических функций.

    Для того, чтобы установить необходимый пакет, нужно воспользоваться командой require, которая либо записывает зависимость в конфигурационный файл composer.json, либо создает его, если его еще нет:

    composer require cocur/slugify:4.6

    В этом руководстве используется cocur/slugify версии 4.6.0.

    После выполнения этой команды в терминале консоли может появиться ошибка, сообщающая о недостающих системных библиотеках:

    ./composer.json has been created Running composer update cocur/slugify Loading composer repositories with package information Updating dependencies Your requirements could not be resolved to an installable set of packages. Problem 1 - Root composer.json requires cocur/slugify 4.1 -> satisfiable by cocur/slugify[v4.1.0]. - cocur/slugify v4.1.0 requires ext-mbstring * -> it is missing from your system. Install or enable PHP's mbstring extension. ...

    Этот консольный вывод сообщает о недостающей системной библиотеке ext-mbstring, которая требуется для корректной работы cocur/slugify.

    Это библиотеку можно вручную попытаться найти в пакетной менеджере APT:

    После этого в консольном терминале появится список совпадений по названию:

    Sorting... Done Full Text Search... Done php-mbstring/jammy 2:8.1+92ubuntu1 all MBSTRING module for PHP [default] php-patchwork-utf8/jammy 1.3.1-1 all UTF-8 strings handling for PHP php-symfony-polyfill-mbstring/jammy 1.24.0-1ubuntu2 all Symfony polyfill for the Mbstring extension php-symfony-polyfill-util/jammy 1.24.0-1ubuntu2 all Symfony utilities for portability of PHP codes php8.1-mbstring/jammy-updates,jammy-security 8.1.2-1ubuntu2.19 amd64 MBSTRING module for PHP

    Можно заметить, что самое первое совпадение и есть искомая библиотека. Поэтому устанавливаем ее:

    sudo apt install php-mbstring -y

    После завершения установки недостающей системной библиотеки снова запускаем установку пакета для Composer:

    composer require cocur/slugify:4.6

    На этот раз консольный вывод должен сообщить об успешной установке:

    ./composer.json has been created Running composer update cocur/slugify Loading composer repositories with package information Updating dependencies Lock file operations: 1 install, 0 updates, 0 removals - Locking cocur/slugify (v4.6.0) Writing lock file Installing dependencies from lock file (including require-dev) Package operations: 1 install, 0 updates, 0 removals - Downloading cocur/slugify (v4.6.0) - Installing cocur/slugify (v4.6.0): Extracting archive Generating autoload files No security vulnerability advisories found.

    Теперь проверим содержимое директории проекта:

    Можно заметить новые сгенерированные файлы:

    composer.json  composer.lock  vendor

    Каждый файл и каталог имеет свое закономерное предназначение:

    • composer.json — файл с информацией о необходимых зависимостях

    • composer.lock — файл с информацией об уже установленных зависимостях

    • vendor — установленные зависимости проекта

    composer.json — файл с информацией о необходимых зависимостях

    composer.lock — файл с информацией об уже установленных зависимостях

    vendor — установленные зависимости проекта

    Если вы используете систему контроля версий (например, Git), папку vendor нужно исключить из сохранения в репозиторий.

    Интереснее всего взглянуть на содержимое конфигурационного файла:

    { "require": { "cocur/slugify": "4.6" } }

    Можно заметить отдельный блок require, в котором указан необходимый пакет cocur/slugify версии 4.6.

    С помощью специальных символов можно указывать допустимые диапазоны версий, требуемых для корректной работы проекта — все они следуют общепринятому соглашению Semantic Versioning 2.0.0:

    ОграничительДиапазонВозможные значения
    1.5.21.5.21.5.2
    ^1.0от 1.0 до 2.01.0, 1.4.7, 1.9.9
    ^1.1.0от 1.1.0 до 2.01.1.0, 1.2.5, 1.9.9
    ~1.0от 1.0 до 2.0.01.0, 1.5.2, 1.9.9
    ~1.0.0от 1.0.0 до 1.11.0.0, 1.0.2, 1.0.9
    1.*от 1.0 до 2.01.0.0, 1.3.2, 1.9.9
    1.2.*от 1.2 до 1.31.2.0, 1.2.4, 1.2.9

    Более подробную информацию о возможных значениях версий можно посмотреть на специальной странице в официальной документации Composer.

    После того, как зависимость была установлена, ее можно включить в код проекта с помощью автоматически сгенерированного скрипта автозагрузки autoload.php, который находится в директории vendor.

    При включении этого скрипта в PHP-приложение функции и классы существующих зависимостей станут доступны изнутри.

    Поэтому давайте создадим основной файл нашего приложения:

    И наполним его следующим содержимым:

    <?php require __DIR__ . '/vendor/autoload.php'; use Cocur\Slugify\Slugify; $slugify = new Slugify(); // Значение PHP_EOL необходимо для переноса на новую строку в консоли echo '[русский]: ' . $slugify->slugify('Как справится с Composer') . PHP_EOL; echo '[english]: ' . $slugify->slugify('How to deal with composer') . PHP_EOL; ?>

    Теперь скрипт можно запустить:

    В консольном терминале появится следующий вывод:

    [русский]: kak-spravitsya-s-composer [english]: how-to-deal-with-composer

    В Composer есть возможность проверить наличие новых версий библиотек из списка зависимостей на основе диапазонов версий, заданных в конфигурационном файле composer.json:

    Либо можно выполнить обновление избирательно, явно указав имя пакета:

    composer update cocur/slugify

    Если в директории вашего PHP-проекта есть файл composer.json, но при этом еще не установлены указанные в нем зависимости, то их нужно установить.

    Давайте сперва удалим все имеющиеся пакеты и связанную с ними информацию:

    rm vendor composer.lock -R

    Флаг -R необходим для рекурсивного удаления файлов и директорий.

    После этого попробуем запустить скрипт:

    В консоли появится закономерная ошибка:

    PHP Warning: require(/root/phptest/vendor/autoload.php): Failed to open stream: No such file or directory in /root/phptest/main.php on line 2 PHP Fatal error: Uncaught Error: Failed opening required '/root/phptest/vendor/autoload.php' (include_path='.:/usr/share/php') in /root/phptest/main.php:2 Stack trace: #0 {main} thrown in /root/phptest/main.php on line 2

    Теперь повторно установим зависимости на основе данных из конфигурационного файла:

    После чего снова запустим скрипт:

    В консоли появится привычный результат без каких-либо ошибок:

    [русский]: kak-ustanovit-i-ispolzovat-composer [english]: how-to-install-and-use-composer

    Нужен сервер для практики? Арендуйте VPS/VDS в России — root-доступ, NVMe, DDoS-защита и поддержка 24/7.

    VPS для проекта

    VPS с root-доступом, NVMe и поддержкой 24/7 на Simple-Server.

    StarterVDS

    490₽

    в месяц

    1 ядро

    1 ГБ RAM

    20 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Безлимитный трафик
    Заказать VPS
    Рекомендуем

    PerformanceVDS

    1190₽

    в месяц

    2 ядра

    4 ГБ RAM

    60 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Базовая DDoS-защита
    Заказать VPS

    Нужна другая конфигурация или чистый VPS без панели?

    Все тарифы VPS

    Похожие статьи, которые могут быть вам интересны