Все большее количество хостеров начинают переходить на последнюю версию 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' => 'mydb',
'login' => 'login',
'password' => 'password',
'options' => 2,
),
),
'readonly' => true,
),
.......
То есть мы заменили класс
MysqlConnection классом
MysqliConnection.
После этих действий ошибка должна пропасть и сайт снова начнет штатно работать. Если сайт все еще не работает, то стоит проверить установленные решения Битрикс на совместимость с PHP 7. Вполне может быть, что решения давно не обновлялись и не совместимы с новыми платформами. Также стоит проверить наличие всех необходимых для работы Битрикс расширений и настроек сервера. Возможно что-то сбилось после перехода на новый PHP.
12.05.2017