[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проблема работы битрикса 20.0.0 на сервере с php56
kav1
Здравствуйте.

Достался мне сайт на битриксе (версия 20.0.0) от предыдущего админа, то есть "как есть". Версия php на сервере - 5.6. Само собой, сайт работает с ошибками, ибо часть кода (а он у этой версии написан на php7) не работает для php56. Версию php обновить на сервере нет возможности - там еще куча сайтов, которые написаны под php5.6.

Часть кода я смог переписать, воспользовавшись, как ни странно, гуглом. Осталась вот такая ошибка:

[ErrorException] E_RECOVERABLE_ERROR
Argument 1 passed to Bitrix\Sale\Internals\Entity::isMarkedFieldCustom() must be an instance of Bitrix\Sale\Internals\string, string given, called in /home/admin/web/site. xyz/public_html/bitrix/modules/sale/lib/basketitembase.php on line 509 and defined (0)
/home/admin/web/site. xyz/public_html/bitrix/modules/sale/lib/internals/entity.php:688
#0: Bitrix\Sale\Internals\Entity->isMarkedFieldCustom(string)
/home/admin/web/site. xyz/public_html/bitrix/modules/sale/lib/basketitembase.php:509


Кусок кода около 509 строки страницы в basketitembase.php:

public function getFieldValues()
{
$fields = parent::getFieldValues();

$fields['CUSTOM_PRICE'] = $this->isMarkedFieldCustom('PRICE') ? 'Y' : 'N';

return $fields;
}


Сами файлы basketitembase.php и entity.php здесь:

https://yadi.sk/d/ZoSbmQSr7CXTYA

https://yadi.sk/d/tMhPcwfH1a8gXA

1) Как такие конструкции привести к виду, который будет работать на php 5.6?
2) А существует ли в природе какой-нибудь конвертер кода php7 - > php5.6 ? Хе, наверное это фантастика
kav1
Решил проблему конвертации участков кода с помощью данного проекта - https://github.com/spatie/7to5

Ну и мелочи вроде портирования конструкций вида:

$class = static::getEntityClass()->normalizeEntityClass($class);


замещаем на:


$class2 = get_called_class();
$class2 = Entity::normalizeEntityClass($class);
$class = $class2;


Оно работает теперь :) хоть и медленней, чем если бы на сервере был php 7...
killer8080
Цитата (mav1 @ 12.07.2020 - 18:02)
Оно работает теперь smile.gif хоть и медленней, чем если бы на сервере был php 7...

Ну и стоило оно того?
Цитата (mav1 @ 11.07.2020 - 19:13)
Версию php обновить на сервере нет возможности - там еще куча сайтов, которые написаны под php5.6.

причём тут остальные сайты? Даже на фуфлыжных шаредах есть возможность выбирать версию php отдельно для каждого хоста. VPS сейчас вообще копейки стоят. Может нужно было обосновать клиенту необходимость смены хостинга на нормальный?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.