Мастерская iPloGic
+7 (926) 961-66-26

 — База знаний — Перевод Битрикс на PHP7

Перевод Битрикс на PHP7

Все большее количество хостеров начинают переходить на последнюю версию PHP. Она предоставляет новые возможности разработчикам и оптимизирует работу скриптов. Последние версии системы 1С Битрикс полностью поддерживают работу на PHP 7. В этой статье мы раскажем как настроить Битрикс для работы с новой версией PHP и какие трудности могут возникнуть при этом.

Обновите Битрикс до последней версии до перехода, предварительно сделав полный бэкап.

Также нам понадобится файл /bitrix/.settings.php. Иногда бывает так, что файл .settings.php еще не создан. Это связано с параллельным использованием двух технологий Битрикс. В этом случае его нужно создать. Можно воспользоваться этой статьей, создать вручную (здесь описание и ссылка на пример) или любым другим способом. Также стоит пройти полное тестирование системы (Настройки > Инструменты > Проверка системы). Возможно, что тест выдаст ошибку об отсутствии файла и предложит его создать.

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

[Error]
Call to undefined function Bitrix\Main\DB\mysql_query() (0)

Это происходит из-за того, что в PHP 7 больше не используется расширение mysql. Вместо него используется расширение mysqli. А Битрикс по умолчанию настроен на работу с mysql. Поэтому надо провести дополнительные настройки:

В файле конфигурации битрикс /bitrix/php_interface/dbconn.php добавим в конец файла строку:

define("BX_USE_MYSQLI", true);
В файле /bitrix/.settings.php изменить параметр className во фрагменте connections. В итоге получим:
......
  'connections' =>
  array (
    'value' =>
    array (
      'default' =>
      array (
        'className' => '\\Bitrix\\Main\\DB\\MysqliConnection',
        'host' => 'localhost',
        'database' => 'konstt_3',
        'login' => 'konstt_3',
        'password' => 'X7SHTS00',
        'options' => 2,
      ),
    ),
    'readonly' => true,
  ),
.......
То есть мы заменили класс MysqlConnection классом MysqliConnection.

После этих действий ошибка должна пропасть и сайт снова начнет штатно работать. Если сайт все еще не работает, то стоит проверить установленные решения Битрикс на совместимость с PHP 7. Вполне может быть, что решения давно не обновлялись и не совместимы с новыми платформами. Также стоит проверить наличие всех необходимых для работы Битрикс расширений и настроек сервера. Возможно что-то сбилось после перехода на новый PHP.


12.05.2017