Перейти к содержанию

Composer — стандартный менеджер зависимостей для PHP. Он устанавливает библиотеки из каталога Packagist, следит за согласованностью их версий и генерирует скрипт-автозагрузчик классов vendor/autoload.php.

В Bitrix Framework Composer открывает доступ к:

Установить Composer

Composer можно установить:

  • глобально — для работы в любой папке сервера,

  • локально — только для текущего проекта.

Совет

Используйте официальную инструкцию для установки Composer на сервере.

Проверьте, что Composer работает:

```bash prompt="$" $ composer -V

Composer version 2.8.5 2025-01-21 15:23:40

## Подключить Composer к Bitrix Framework

Чтобы Bitrix Framework автоматически подключал автозагрузчик Composer, укажите путь к `composer.json` в файле `.settings.php`. Настройка состоит из трех шагов: разместить файл, указать путь к нему, подключить стандартные зависимости.

### Шаг 1. Разместить composer.json

Создайте `composer.json` за пределами `DOCUMENT_ROOT`, например в `/home/bitrix/`. Так конфигурация не будет доступна из браузера.

!!! warning "Внимание"


    Если вынести файл за `DOCUMENT_ROOT` нельзя, разместите его в `/local/php_interface/` и закройте файл `composer.json` и папку `vendor` от веб-доступа.



!!! note "Примечание"


    В дистрибутиве есть пример файла конфигурации `/bitrix/composer.json.example`. Используйте его как основу для своего `composer.json`.



### Шаг 2. Указать путь к composer.json

Добавьте в файл `/home/bitrix/www/bitrix/.settings.php` настройку `composer.config_path`:

```php
return [
    'composer' => [
        'value' => [
            'config_path' => '/home/bitrix/composer.json'
        ]
    ]
];

Примечание

Bitrix Framework не читает содержимое composer.json. По расположению файла он находит vendor/autoload.php и подключает его автоматически.

Автозагрузчик появится после первой установки зависимостей на следующем шаге.

Шаг 3. Подключить стандартные зависимости

Стандартные зависимости ядра описаны в файле bitrix/composer-bx.json. Подключите его к своему composer.json через плагин Composer Merge Plugin. Для этого в ваш composer.json добавьте подключение плагина:

{
   "require": {
       "wikimedia/composer-merge-plugin": "^2.0"
   },
   "extra": {
       "merge-plugin": {
           "include": [
               "/path/to/bitrix/composer-bx.json"
           ]
       }
   }
}

Внимание

Путь /path/to/bitrix/ — полный путь к папке bitrix на вашем сервере, например, /home/bitrix/www/bitrix/.

Установите зависимости из папки с composer.json:

```bash prompt="$" $ cd /home/bitrix $ composer install

Composer создаст папку `vendor/` рядом с `composer.json` и установит туда зависимости. Автозагрузчик `vendor/autoload.php` подключится автоматически — в коде подключать его вручную не нужно.

## Установить сторонние пакеты

После настройки новые пакеты устанавливают одной командой. Например, чтобы генерировать Word-документы, установите пакет [phpoffice/phpword](https://packagist.org/packages/phpoffice/phpword):

```bash prompt="$"
$ composer require phpoffice/phpword

Команда добавит пакет в composer.json, скачает его в vendor/ и обновит автозагрузчик. Классы пакета сразу доступны в коде:

<?php
// Подключение верхней части сайта
require($_SERVER['DOCUMENT_ROOT'] . '/bitrix/header.php');


use PhpOffice\PhpWord\PhpWord;
use PhpOffice\PhpWord\IOFactory;

$phpWord = new PhpWord();
$section = $phpWord->addSection();
$section->addText('Документ создан в Bitrix Framework');

$writer = IOFactory::createWriter($phpWord, 'Word2007');
$writer->save($_SERVER['DOCUMENT_ROOT'] . '/upload/example.docx');

echo "Файл сохранен - <a href='/upload/example.docx' download>скачать</a>";

// подключение нижней части сайта
require($_SERVER['DOCUMENT_ROOT'] . '/bitrix/footer.php');

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

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

bash prompt="$" $ composer update phpoffice/phpword

Composer проверит совместимость версии PHP и пакетов и зафиксирует точные версии в файле composer.lock. Храните composer.lock в репозитории проекта, тогда на всех серверах будут одинаковые версии.

Что почитать