Composer - это свободный пакетный менеджер для установки зависимостей и самих пакетов PHP. Он разработан Нильсом Адерманом и Хорди Боггиано. С помощью скрипта можно в несколько нажатий установить нужный пакет, а также все его зависимости, например, ZendFramework или Symfony. Он широко используется разработчиками PHP скриптов.
В этой статье мы рассмотрим как установить Composer Ubuntu 20.04 и более поздних версиях, а также как пользоваться утилитой.
Содержание статьи
Установка Composer в Ubuntu
Вы не можете установить программу из официальных репозиториев. Нужно скачать скрипт из официального сайта и поместить его в папку с вашим проектом. Но сначала обновите систему и установите зависимости:
sudo apt update
sudo apt install curl php-cli php-mbstring git unzip
Установка Composer ubuntu может быть выполнена двумя способами. Либо локально в папку проекта, либо же глобально, для всей системы. Сначала рассмотрим как установить программу локально. Перейдите в папку проекта:
cd /путь/к/папке/
Выполните такую команду для загрузки установочного скрипта:
curl -sS https://getcomposer.org/installer -o composer-setup.php
Затем запустите этот скрипт, чтобы создать файл composet.phar, который и будет использоваться для установки пакетов:
php composer-setup.php
Теперь вы можете проверить работает ли Composer:
php composer.phar
Теперь рассмотрим как установить программу глобально для всей системы. Вы можете скачивать файл установщика в любую папку, например, домашнюю:
curl -sS https://getcomposer.org/installer -o composer-setup.php
Только команда установки будет отличаться, в ней мы указываем папку, куда нужно установить скрипт:
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
Для проверки работы, вы можете выполнить команду:
composer
Использование Composer
Для того чтобы указать какие пакеты нужно устанавливать используется конфигурационный файл composer.json. Сначала нужно его инициализировать в папке проекта. Для этого выполните:
composer init
Затем ответьте на вопросы программы. Можно оставить ответы по умолчанию. В файле сообщаются зависимости вашего проекта, а также их версии. Создайте этот файл в корневой папке вашего проекта. Синтаксис записей очень прост, и если вы раньше имели дело с JSON, то без проблем разберетесь:
{
"require": {
"производитель/пакет": "версия"
}
"require-dev": {
"производитель/пакет": "версия"
}
}
Секция require отвечает за пакеты, необходимые для работы программы, а require-dev - только за пакеты для разработки. Например, для проекта необходимо установить библиотеку работы с RSS Atom - picofeed. Для этого сначала откройте сайт https://packagist.org и найдите этот пакет:
На его странице вы можете видеть команду composer, которой его можно установить, в ней полное имя, а чуть ниже последнюю версию.
Для установки пакета выполните команду со страницы:
composer require p3k/picofeed
После установки пакет появится в секции require. Если во время установки вы получаете ошибку, например, такую:
Это означает, что пакету не хватает каких-либо зависимостей или возникли конфликты с уже установленными пакетами. В данном случае не хватает расширения PHP Dom. Вы можете установить его командой:
sudo apt install php-dom
Для того чтобы установить все пакеты, описанные в файле конфигурации, используйте команду:
composer install
После установки пакетов composer создает файл autoload.php в папке vendor вашего проекта, с помощью него можно включить в проект все библиотеки, которые были установлены. Для этого достаточно подключить этот файл к проекту с помощью инструкции include или require:
Например, возьмем небольшой пример чтения ленты rss с GitHub:
vi feed.php
<?php require("vendor/autoload.php"); use PicoFeed\Reader\Reader; use PicoFeed\PicoFeedException; try { $reader = new Reader; // Return a resource $resource = $reader->download('https://losst.pro/feed/'); // Return the right parser instance according to the feed format $parser = $reader->getParser( $resource->getUrl(), $resource->getContent(), $resource->getEncoding() ); // Return a Feed object $feed = $parser->execute(); // Print the feed properties with the magic method __toString() echo $feed; }catch (PicoFeedException $e) { // Do Something... } ?>
php feed.php
Установленные пакеты можно удалить. Например:
composer remove picofeed
Если версии пакетов устарели, то вы можете их обновить с помощью одной команды:
composer update
Выводы
В этой небольшой статье мы рассмотрели как выполняется установка Composer Ubuntu 20.04 и 18.04, а также как использовать эту утилиту в своем проекте для разрешения зависимостей. Это очень удобно, когда вы можете один раз указать нужные пакеты и больше не заботиться об их установке и обновлении на других машинах.
Не могу обновить до 2 и выше версий. Изначально как стала 1.10 и все. Посоветуйте, что можно сделать, или что я делаю не так?
Вот это точно не помогает, и пишет отсутствует "composer-setup.php": sudo php composer-setup.php --install-dir=/usr/bin --filename=composer