Введите поисковый запрос

Переход битрикс на php7

Как перевести сайт на Битриксе на новую версию php7. Решение с ошибками mysql

Вышел php7 и многие заявляют, что производительность 1С-Bitrix на этой версии php возросла.
Но если обновить php, то сайт перестанет работать.

Так же если вы развернули сайт несколько лет назад, ещё на Битрикс машине, например, CentOS-6-amd64-bitrix, то на большинстве хостингов уже нет возможности установить CentOS-6, есть только Битрикс машина CentOS-7. Но если развернуть бекап на свежей битрикс машине сайт снова не заработает.

Будет получен следующий набор ошибок при попытке открыть сайт:

[Error] Call to undefined function Bitrix\Main\DB\mysql_real_escape_string() (0) /home/bitrix/www/bitrix/modules/main/lib/db/mysqlsqlhelper.php:21 #0: Bitrix\Main\DB\MysqlSqlHelper->forSql(string) /home/bitrix/www/bitrix/modules/main/lib/db/sqlexpression.php:111 #1: Bitrix\Main\DB\SqlExpression->execPlaceholders(array) #2: preg_replace_callback(string, array, string) /home/bitrix/www/bitrix/modules/main/lib/db/sqlexpression.php:68 #3: Bitrix\Main\DB\SqlExpression->compile() /home/bitrix/www/bitrix/modules/main/classes/general/usertype.php:2913 #4: CAllSQLWhere->_ExprEQ(string, object) /home/bitrix/www/bitrix/modules/main/classes/general/usertype.php:3557 #5: CAllSQLWhere->addStringFilter(array, boolean, string, string, object) /home/bitrix/www/bitrix/modules/main/classes/general/usertype.php:3216 #6: CAllSQLWhere->GetQueryEx(array, array) /home/bitrix/www/bitrix/modules/main/classes/general/usertype.php:3101 #7: CAllSQLWhere->GetQuery(array) /home/bitrix/www/bitrix/modules/main/lib/entity/query.php:1119 #8: Bitrix\Main\Entity\Query->buildJoin() /home/bitrix/www/bitrix/modules/main/lib/entity/query.php:1297 #9: Bitrix\Main\Entity\Query->buildQuery() /home/bitrix/www/bitrix/modules/main/lib/entity/query.php:486 #10: Bitrix\Main\Entity\Query->exec() /home/bitrix/www/bitrix/modules/main/lib/entity/datamanager.php:256 #11: Bitrix\Main\Entity\DataManager::getList(array) /home/bitrix/www/bitrix/modules/highloadblock/admin/menu.php:14 #12: include(string) /home/bitrix/www/bitrix/modules/main/interface/admin_lib.php:640 #13: CAdminMenu->_IncludeMenu(string) /home/bitrix/www/bitrix/modules/main/interface/admin_lib.php:418 #14: CAdminMenu->Init(array) /home/bitrix/www/bitrix/modules/main/interface/prolog_main_admin.php:30 #15: require_once(string) /home/bitrix/www/bitrix/modules/main/include/prolog_admin_after.php:15 #16: require(string) /home/bitrix/www/bitrix/modules/main/admin/update_system.php:31 #17: require_once(string) /home/bitrix/www/bitrix/admin/update_system.php:2

Или другие вариантов ошибок с подключением к Базе данных

 Все дело в том, что в 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!

Ваша оценка:

Комментарии (0)


Оставить заявку
 
 

Денис Бунаков

C 2012 года являюсь Битрикс Программистом.
Программист 1С:Битрикс – это веб-разработчик с узким профилем, который работает непосредственно с продукцией от компании 1С.