bitrix main db mysql connect

Проконсультируем, найдем оптимальное решение, подготовим индивидуальное предложение.

О нас

AKWEB Development – группа инициативных, профессиональных, высококвалифицированных и опытных разработчиков. Мы готовы предложить создание ресурса любого уровня сложности и в любом формате, оперативно решить все проблемы и трудности, а также помочь квалифицированной консультацией.

При развертывании резервной копии сайта на Bitrix у себя на хостинге увидел ошибку:

Fatal error: Call to undefined function BitrixMainDBmysql_connect() in . on line 40

Как оказалось, на предыдущем хостинге использовался PHP 5.x, а на моем PHP 7.0, а mysql_connect «. устарело, начиная с версии PHP 5.5.0, и удалено в PHP 7.0.0. Используйте вместо него MySQLi или PDO_MySQL.«

В Bitrix нужно включить использование mysqli_connect следующим способом (подсказал знающий человек, сам бы долго разбирался)

  1. В конце файла itrixphp_interfacedbconn.php , перед ?> , нужно добавь строку define(«BX_USE_MYSQLI», true);
  2. В файле itrix.settings.php , в настройках
    ‘connections’ =>
    array (
    ‘value’ =>
    array (
    ‘default’ =>
    array (
    ‘className’ => ‘\Bitrix\Main\DB\MysqlConnection‘,
    ‘host’ => ‘localhost’,
    ‘database’ => ‘dbName’,
    ‘login’ => ‘root’,
    ‘password’ => ‘123456’,
    ),
    ),
    ),
    Заменить на ‘className’ => ‘\Bitrix\Main\DB\MysqliConnection‘,

Все заработало, Bitrix «завелся»)

Проблема описана еще в 2014 году на форуме Bitrix, и может возникнуть на старых проектах, в обновлении ядра 14.5.2 добавлена полная поддержка mysqli. Включать mysqli нужно отдельно для старого и нового ядра.

Разворачиваю сайт из бэкапа на Bitrix VM. Сайт на PHP 5, в виртуалке стоит PHP 7. Вроде проблем с переносом не должно возникнуть, При попытке зайти на сайт пишет:

Подключение к БД правильное, во всяком случае в консоле по этому логин-паролю подключаюсь. Что делать то?

1 ответ 1

Проверьте не используют ли конфигурационные файлы битрикса /bitrix/php_interface/dbconn.php и /bitrix/.settings.php библиотеку mysql . Она не поддерживается уже давно, но в php7 уже нет механизма совместимости с ней.

Вам нужно перевести работу на библиотеку mysqli для этого в файле /bitrix/php_interface/dbconn.php вам нужно прописать строку:

И на всяки случай проверьте значение переменной $DBHost для работы на виртуалке от битрикса лучше всего чтобы было так:

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