Composer и PHP 8.1: установка и настройка

Раздел: Инструменты разработки -> Управление зависимостями

Установка Composer для PHP 8.1

Как выполнить глобальную установку Composer для PHP 8.1?

Основной способ - установка через официальный скрипт. Этот метод считается наиболее эффективным, так как позволяет получить последнюю версию Composer, совместимую с PHP 8.1, и разместить её глобально для использования в любом проекте.

  1. Проверка версии PHP:
    php -v

    Docker php composer (composer в docker php)

    Убедитесь, что выводится PHP 8.1.x. Если версия иная, укажите путь к нужной версии в шаге 3.
  2. Загрузка установщика:
    php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

    Autoload php composer (автозагрузка классов с помощью composer в php)

  3. Проверка подписи (SHA-384):
    php -r "if (hash_file('sha384', 'composer-setup.php') === '<AКТУАЛЬНАЯ_СУММА>') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"

    Php composer package (управление пакетами composer в php)

    Свежую сумму можно получить на getcomposer.org/download.
  4. Установка в системную директорию:
    php composer-setup.php --install-dir=/usr/local/bin --filename=composer

    Composer php 8.1 (установка composer для php 8.1)

    Если нет прав, используйте sudo:
    sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer

    Php composer json (php: работа с composer.json)

  5. Удаление установщика:
    php -r "unlink('composer-setup.php');"

    Composer platform php (платформа composer (platform config))

  6. Проверка установки:
    composer --version

    Vendor php (директория vendor в php (composer))

    Ожидаемый вывод:
    Composer version 2.7.0 2024-03-15 12:00:00

    Composer php (composer менеджер зависимостей php)

    (версия может отличаться).

Типичные ошибки

  • Ошибка «php: command not found» - PHP не установлен или не добавлен в PATH. Проверьте установку PHP 8.1.
  • Ошибка «Permission denied» - не хватает прав для записи в /usr/local/bin. Используйте sudo или измените права временно.
  • Ошибка «Composer is not running on PHP 8.1» - установщик использует другую версию PHP. Укажите полный путь к PHP 8.1:
    /usr/bin/php8.1 composer-setup.php ...

    удалить php (удаление php)

Как установить Composer только для конкретного проекта (локально)?

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

  1. Перейдите в корень проекта:
    cd /path/to/project
  2. Скачайте и выполните установщик:
    php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
    php composer-setup.php --filename=composer.phar
  3. Запускайте через
    php composer.phar
    Например:
    php composer.phar install

Возможные сложности

  • Файл composer.phar не исполняется - добавьте права на выполнение:
    chmod +x composer.phar
  • Проблемы с версией PHP - используйте полный путь, как описано в основном решении.

Как установить Composer с помощью системного менеджера пакетов?

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

  • Ubuntu / Debian:
    sudo apt update
    sudo apt install composer
    Проверка версии:
    composer --version
  • macOS (Homebrew):
    brew install composer

Проблемы

  • Устаревшая версия - пакетный менеджер может предложить Composer 1.x. Обновите через
    composer self-update
    или используйте официальный скрипт.
  • Конфликт с глобальной установкой - если Composer уже установлен иным способом, пути могут пересекаться. Удалите лишний экземпляр.

Как использовать Composer в Docker-контейнере с PHP 8.1?

Для изолированной разработки полезно запускать Composer внутри контейнера. Это гарантирует одинаковое окружение на всех машинах.

  1. Создайте Dockerfile:
    FROM php:8.1-cli
    RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" \
        && php composer-setup.php --install-dir=/usr/local/bin --filename=composer \
        && php -r "unlink('composer-setup.php');"
  2. Соберите образ:
    docker build -t php81-composer .
  3. Запустите контейнер и выполните команды Composer:
    docker run --rm -v $(pwd):/app -w /app php81-composer composer install

Ошибки

  • Проблемы с временными зонами - в контейнере может отсутствовать настройка php.ini. Добавьте
    RUN docker-php-ext-install ...
    при необходимости.
  • Медленная работа - монтирование томов на macOS может снижать производительность. Используйте Docker Desktop с настройками.

Расширенные примеры использования Composer с PHP 8.1

Пример 1: Установка пакета monolog/monolog в проект

Пример
composer require monolog/monolog
# Вывод:
# Using version ^3.7 for monolog/monolog
# ./composer.json has been updated
# Running composer update monolog/monolog
# Loading composer repositories with package information
# ...
# Writing lock file
# Generating autoload files

Результат: в файле composer.json появится запись, а в vendor/ - код пакета.

Пример 2: Установка зависимостей без dev-пакетов (продакшн-окружение)

Пример
composer install --no-dev
# Вывод:
# Loading composer repositories with package information
# Installing dependencies from lock file
# ...
# Generating optimized autoload files

Важно: при запуске в окружении APP_ENV=prod рекомендуется добавлять флаг --optimize-autoloader для повышения производительности.

Пример 3: Диагностика работоспособности Composer

Пример
composer diagnose
# Вывод:
# Checking platform settings: OK
# Checking git settings: OK
# Checking http connectivity: OK
# ...
# Checking composer version: OK

Позволяет выявить проблемы с PHP-расширениями, подключением к packagist.org и правами доступа.

Пример 4: Обновление самого Composer до последней версии

Пример
composer self-update
# Вывод:
# Updating to version 2.7.0 (stable channel).
#    Use composer self-update --rollback to return to version 2.6.6

Полезно после установки через менеджер пакетов, когда версия устарела.

Пример 5: Глобальная установка утилиты (например, phpunit/phpunit)

Пример
composer global require phpunit/phpunit
# После этого phpunit будет доступен как ~/.composer/vendor/bin/phpunit
# Добавление директории в PATH:
echo 'export PATH="$HOME/.composer/vendor/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
phpunit --version
# Вывод: PHPUnit 10.5.20 by Sebastian Bergmann and contributors.

Обратите внимание: глобальные пакеты не должны конфликтовать с локальными версиями в проектах.

Пример 6: Создание нового проекта на основе фреймворка Laravel

Пример
composer create-project --prefer-dist laravel/laravel myapp 11.*
# Вывод:
# Creating a "laravel/laravel" project at "./myapp"
# Installing laravel/laravel (v11.0.0)
# ...
# Setting up your project...
# Application ready! Build something amazing.

Флаг --prefer-dist ускоряет загрузку из архива вместо Git-клонирования.

Пример 7: Использование Composer в скрипте развертывания (deploy)

Пример
#!/bin/bash
# deploy.sh
cd /var/www/app
git pull
/usr/local/bin/composer install --no-dev --optimize-autoloader --no-interaction
php artisan migrate --force

Этот скрипт гарантирует, что зависимости не будут содержать dev-пакеты на продакшене, а автозагрузка будет оптимизирована.

Установка Composer для PHP 8.1 - comments

En
Composer php 8.1 (php)