Предисловие
Продукты 1С-Битрикс часто имеют не однозначную оценку со стороны разработчиков. Это в основном обусловлено тем, что продукт разрабатывается с 2002 года и имеет большое количество старой кодовой базы, а также очень широкий функционал, который тяжело поддерживать даже большой команде разработчиков, а тем более вовремя писать подробную документацию. Ну и главное наверное, это то, что продукт рассчитан больше на пользователя, чем на разработчика.
Но есть вещи, которые не оправдывает ни один из вышеперечисленных фактов.
Устанавливаем BitrixSetup
У нас стандартное веб окружение LAMP:
L - Ubuntu 16.0
A - Apache 2.4
M - Mysql 5.4
P - php 7.0
Устанавливаем BitrixSetup и получаем фатальную ошибку:
Ошибка находится в файле "/bitrix/modules/main/lib/httpapplication.php":
Ниже приводим метод, который вызывает ошибку, а точнее его седьмая строчка
<?
public function run()
{
try
{
$router = new Router($this->context->getRequest());
/** @var Controller $controller */
/** @var string $actionName */
[$controller, $actionName] = $router->getControllerAndAction();
if (!$controller)
{
throw new SystemException('Could not find controller for the request');
}
$this->runController($controller, $actionName);
}
catch (\Throwable $e)
{
$errorCollection = new ErrorCollection();
$this->processRunError($e, $errorCollection);
$this->finalizeControllerResult($controller ?? null, null, $errorCollection);
}
}
На этой строке мы массиву присваиваем метод, именно это присвоение и вызывает ошибку. На просторах интернета мною не было найдено решение этой фатальной ошибки, то есть никто о ней не пишет, в том числе и на официальном ресурсе 1С-Битрикс. Как видно из источника https://www.php.net/manual/ru/function.list.php присваивание массива в php работает только с версии 7.1, в данном коде мы не видим проверки на версию php, в документации мы видим информацию о версии php, ниже которой нельзя использовать продукт https://www.1c-bitrix.ru/products/cms/requirements.php
К чему весь этот пост, ведь по сути мы устанавливаем чистый продукт и логично, что мы ставим версию php указанную как минимальную, но здесь есть несколько "НО":
Разработчики 1С-Битрикс всегда говорили о поддержке обратной совместимости, и дескать именно из-за этого большие проблемы с поддержкой кода, тяжело проходят рефакторинги и долгие релизы, но представим, что у вас есть старый проект, который вы можете перенести только выгрузив ветку шаблона сайта с разделами, так как хранить весь "1С-Битрикс" вам не позволяет количество ресурсов, если у вас не один проект, а множество. Проект со старой кодовой базой установить на чистый установленный продукт не представляется возможным.
Самое главное, появляются ошибки с версиями php 7.4.*, а на php 8.0.* инсталлятор вообще отказывается работать, почему бы не указать явно какие версии php использует продукт.
Заключение
Что мы имеем по итогу:
Для быстрой работы продукта нам нужна виртуальная машина 1С-Битрикс, а с другими часто приходится кастомизировать элементы зависящие от ядра тем самым теряя возможность обновлений.
Для разработки и поддержки продукта нам нужен разработчик, который умеет работать с mix кодом, BX.jquery и т.д., а таких нужно еще поискать.
При обновлениях продукта по факту нет обратной совместимости, нельзя обновить ядро с поддержкой php 7.0, например.
Большое количество сайтов в связи с тяжелой кодовой базой 1С-Битрикса находятся на старом не безопасном коде и обновится не могут.
Получается, это дорого, не безопасно и не понятно перспективно ли? С любой новой версией php 1С-Битрикс может просто остаться на обочине развития веб разработки.
P.S.: Продукт, который не заботится о своих пользователях, а только гонится за новыми релизами, обречен на закрытие.