Ошибка несовместимости Битрикс и PHP 7.1+

При установке сайта на Битрикс на сервер с PHP 7.1 и выше сталкиваемся со следующей проблемой: в административном интерфейсе отваливается стартовый рабочий стол.

Битрикс оповещает об этом следующим экраном:

Идем в файл .settings.php, который находится в 16+ версии в следующей локации:
/bitrix/.settings.php

В конфиг-файле включаем вывод ошибок:

  'exception_handling' => array (
    'value' => array (
      'debug' => false,

После этого обновляем страницу административного интерфейса и видим вот это:

Таким образом, Битрикс хочет нам сказать, что у него возникла проблема несовместимости при обработке текстовых переменных в следующих скриптах:

[Error] 
[] operator not supported for strings (0)
/var/www/alkc/data/www/alkc/bitrix/modules/main/classes/general/checklist.php:476
#0: CCheckListResult::GetList(array, array)
	/var/www/alkc/data/www/alkc/bitrix/modules/main/classes/general/checklist.php:52
#1: CCheckList->__construct()
	/var/www/alkc/data/www/alkc/bitrix/gadgets/bitrix/admin_checklist/index.php:17
#2: include(string)
	/var/www/alkc/data/www/alkc/bitrix/components/bitrix/desktop/include.php:105
#3: BXGadget::GetGadgetContent(array, array)
	/var/www/alkc/data/www/alkc/bitrix/components/bitrix/desktop/component.php:823
#4: include(string)
	/var/www/alkc/data/www/alkc/bitrix/modules/main/classes/general/component.php:548
#5: CBitrixComponent->__includeComponent()
	/var/www/alkc/data/www/alkc/bitrix/modules/main/classes/general/component.php:600
#6: CBitrixComponent->includeComponent(string, array, boolean)
	/var/www/alkc/data/www/alkc/bitrix/modules/main/classes/general/main.php:1035
#7: CAllMain->IncludeComponent(string, string, array, boolean, array)
	/var/www/alkc/data/www/alkc/bitrix/modules/main/interface/desktop.php:35
#8: require(string)
	/var/www/alkc/data/www/alkc/bitrix/admin/index.php:2

Чтобы исправить эту несовместимость идем по следующим адресам:

/bitrix/modules/iblock/classes/general/iblockproperty.php, здесь ищем 20 строку и в ней исправляем:

Было:

$arSqlSearch = "";

Стало:

$arSqlSearch = [];

Теперь идем в: /bitrix/modules/main/classes/general/checklist.php и вносим исправления здесь на 472 строчке, выполняем все так же:

Было:

$arSqlWhere = "";

Стало:

$arSqlWhere = [];

Ура! Все заработало.

Comments are closed.