Переход битрикс на php7
Вышел php7 и многие заявляют, что производительность 1С-Bitrix на этой версии php возросла.
Но если обновить php, то сайт перестанет работать.
Так же если вы развернули сайт несколько лет назад, ещё на Битрикс машине, например, CentOS-6-amd64-bitrix, то на большинстве хостингов уже нет возможности установить CentOS-6, есть только Битрикс машина CentOS-7. Но если развернуть бекап на свежей битрикс машине сайт снова не заработает.
Будет получен следующий набор ошибок при попытке открыть сайт:
Все дело в том, что в php7 произошел переход на Mysqli. И чтобы заработал сайт, достаточно внести настройки в 2 файла движка Битрикс.
В файл /bitrix/php_interface/dbconn.php
Добавить: define(«BX_USE_MYSQLI», true);
И в файл: /bitrix/.settings.php
Исправить строку: ‘className’ => ‘\Bitrix\Main\DB\MysqlConnection’, на ‘className’ => ‘\Bitrix\Main\DB\MysqliConnection’,
И ваш сайт на Битрикс будет работать на php7!
I get this error:
Which is odd because mb_strpos() was introduced in PHP 4, and I’m running PHP 5.3.3
Anybody else run into something like this and know how to fix it? I searched and I can’t figure it out.
PS. I’m running centOS 5.
4 Answers 4
MBString is not a default extension in PHP and you have to install it if you are running linux try
as a root user or
on windows you have to edit php.ini to use the extension dll library
Note: mb_strpos still supported in PHP 5
При включенном opcache выпадает такая ошибка:
Call to undefined function mb_orig_strpos
ну и дальше путь к файлу
При выключенном — ошибки нет но весь сайт тормозит (я еще не установил memcached).
Такую функцию я не находил — перелопатила github и google в поисках.
Гугл всегда выдавал похожий код:
Здесь, как видно, проверка на существование функции идет. Да и в других файлах тоже.
Просто отключить opcache(это и рекомендует техподдержка) — это не выход, я думаю.
Возможно битрих полностью не совместим с php7?