call to undefined function mb orig strpos

Переход битрикс на 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?

Оцените статью