233  /  381
Справочник

Composer и Bitrix Framework

Просмотров: 83650
Дата последнего изменения: 20.02.2025
Татьяна Старкова
Сложность урока:
4 уровень - сложно, требуется сосредоточиться, внимание деталям и точному следованию инструкции.
1
2
3
4
5
Недоступно в лицензиях:
Ограничений нет

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

В версии 18.0.5 мы начали использовать composer внутри продукта в режиме разработки. Он понадобится вам, если вы захотите воспользоваться такими преимуществами, как аннотация ORM классов и в целом интерфейсом командной строки CLI. Если вы уже используете composer в своем проекте на 1С-Битрикс, мы подготовили готовый рецепт интеграции с нашей конфигурацией зависимостей.

Прежде всего, вам нужен установленный composer. Простая инструкция по установке есть на официальном сайте.

Установка Composer на BitrixVM

От имени пользователя root:

  • Включите PHP-модуль phar
  • Отключите curl
  • Перезапустите веб-сервер
mv -f /etc/php.d/20-phar.ini.disabled /etc/php.d/20-phar.ini
mv -f /etc/php.d/20-curl.ini /etc/php.d/20-curl.ini.disabled
systemctl restart httpd.service

Composer можно установить глобально или локально для конкретного сайта.

Глобальная установка Composer

Глобальная установка не требует настройки переменных окружения.

  1. Установите Composer:
    wget https://getcomposer.org/download/2.8.2/composer.phar
    chmod +x composer.phar
    mv composer.phar /usr/local/bin/composer
    composer --version
  2. Перейдите в директорию сайта и установите зависимости:
    cd /home/bitrix/ext_www/site1/bitrix
    COMPOSER=composer-bx.json composer install
    php bitrix.php orm:annotate

Локальная установка Composer

Локальная установка для конкретного сайта требует настройки переменной окружения COMPOSER_HOME.

Шаги для пользователя bitrix

  1. Установите Composer:
    php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
    php -r "if (hash_file('sha384', 'composer-setup.php') === 'dac665fdc30fdd8ec78b38b9800061b4150413ff2e3b6f88543c636f7cd84f6db9189d43a81e5503cda447da73c7e5b6') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
    php composer-setup.php
    php -r "unlink('composer-setup.php');"
  2. Настройте переменную окружения COMPOSER_HOME:
    export COMPOSER_HOME="$HOME/.config/composer"
    ./composer.phar --version

Шаги для пользователя root

  1. Настройте переменную окружения в конфигурации Apache:
    • Откройте файл конфигурации сайта:
      mcedit /etc/httpd/bx/conf/bx_ext_site1.conf
    • Добавьте внутри блока VirtualHost:
      SetEnv COMPOSER_HOME /home/bitrix
    • Перезапустите веб-сервер:
      systemctl restart httpd.service
  2. В административном разделе сайта на 1С-Битрикс:
    • Перейдите в Настройки > Инструменты > Командная PHP-строка.
    • Выполните команду:
      $path = getenv("COMPOSER_HOME");
      var_dump(exec("$path/composer.phar --version"));
    • Ожидаемый результат:
      string(42) "Composer version 2.8.2 2024-10-29 16:12:11"

Установка зависимостей

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

$ composer -V
Composer version 1.6.5 2018-05-04 11:44:59

1. Вы еще не используете composer в проекте

Устанавливаем зависимости из нашего bitrix/composer-bx.json:

$ cd bitrix
$ COMPOSER=composer-bx.json composer install

После этого появится папка bitrix/vendor, в которую будут установлены необходимые библиотеки. Если вы хотите задать другое расположение этой директории, вам понадобится создать свой composer.json — смотрите второй вариант установки зависимостей.

2. Вам нужна своя конфигурация composer.json

По умолчанию система ожидает увидеть ваш файл composer.json в папке bitrix, но мы рекомендуем разместить его где-либо за пределами DOCUMENT_ROOT (чтобы он не был доступен публично). В этом случае нужно указать путь до файла в .settings.php, чтобы его конфигурация могла быть использована в продукте.

Файл .settings.php:

<?php
return [
	'composer' => [
		'value' => ['config_path' => '/path/to/your/composer.json']
	],
	// ...
];  

В нем необходимо подключить наш файл с зависимостями bitrix/composer-bx.json с помощью плагина Composer Merge Plugin. В минимальном виде ваш composer.json должен содержать вызов плагина и подключение нашей конфигурации.

Файл composer.json (можно скопировать из bitrix/composer.json.example):

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

Вместо /path/to/bitrix/ вам нужно указать реальный путь до папки bitrix.

К этому вы можете добавить свои зависимости и настройки. Например, чтобы явно задать путь до папки vendor (по умолчанию она будет там же, где файл composer.json), используйте директиву "vendor-dir".

Файл composer.json:

{
	"require": {
		"wikimedia/composer-merge-plugin": "dev-master"
	},
	"config": {
		"vendor-dir": "../../vendor"
	},
	"extra": {
		"merge-plugin": {
			"require": [
				"/path/to/bitrix/composer-bx.json"
			]
		}
	}
}

После описания своей конфигурации останется установить библиотеки:

$ composer install

Теперь вы можете использовать преимущества composer в своем проекте, подключая файл vendor/autoload.php. При использовании CLI-команд он будет подключен автоматически.



26
Курсы разработаны в компании «1С-Битрикс»

Если вы нашли неточность в тексте, непонятное объяснение, пожалуйста, сообщите нам об этом в комментариях.
Развернуть комментарии