Дата последнего изменения: 20.02.2025
В версии 18.0.5 мы начали использовать composer внутри продукта в режиме разработки. Он понадобится вам, если вы захотите воспользоваться такими преимуществами, как аннотация ORM классов и в целом интерфейсом командной строки CLI. Если вы уже используете composer в своем проекте на 1С-Битрикс, мы подготовили готовый рецепт интеграции с нашей конфигурацией зависимостей.
Прежде всего, вам нужен установленный composer. Простая инструкция по установке есть на официальном сайте.
От имени пользователя root
:
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 можно установить глобально или локально для конкретного сайта.
Глобальная установка не требует настройки переменных окружения.
wget https://getcomposer.org/download/2.8.2/composer.phar chmod +x composer.phar mv composer.phar /usr/local/bin/composer composer --version
cd /home/bitrix/ext_www/site1/bitrix COMPOSER=composer-bx.json composer install php bitrix.php orm:annotate
Локальная установка для конкретного сайта требует настройки переменной окружения COMPOSER_HOME
.
Шаги для пользователя bitrix
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');"
COMPOSER_HOME
:
export COMPOSER_HOME="$HOME/.config/composer" ./composer.phar --version
Шаги для пользователя root
mcedit /etc/httpd/bx/conf/bx_ext_site1.conf
VirtualHost
:
SetEnv COMPOSER_HOME /home/bitrix
systemctl restart httpd.service
$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-команд он будет подключен автоматически.