В этой заметке я расскажу о том, как перевести сайт на старой версии Битрикса на PHP 7.x и почему это важно для SEO.
Содержание
Зачем вообще переходить на PHP 7
Скорость загрузки сайта является одним из важных факторов ранжирования. По результатам исследований сайты на PHP 7.x могут показывать прирост вплоть до 300% в скорости обработки запросов в сравнении с «классическим» PHP 5.6, используемым на многих хостингах в качестве версии PHP-интерпретатора по умолчанию.
Веб-разработчики со своей стороны могут как перечислить другие преимущества новых версий PHP, так и посетовать на проблемы совместимости, из-за которых при смене версии интерпретатора приходится переписывать часть кода, написанного с использованием устаревших функций.
Но в плане SEO нас больше интересует то, что при переводе сайта на новые версии PHP снижается время отклика сервера и повышается скорость обработки запросов, что в свою очередь приводит к повышению скорости загрузки страниц. А это, в свою очередь, влияет на ранжирование.
Тест производительности
Давайте сравним цифры из встроенного теста производительности Битрикса*, демонстрируемые на одном и том же сайте в разных условиях.
Замер 1. Хостинг на HDD, PHP 5.6:
Эталонное состояние. Сайт работает на старом выделенном сервере, файлы физически находятся на HDD. Скорость загрузки страниц удовлетворительная, но хотелось бы большего.
Замер 2. Хостинг на SSD, PHP 5.6:
Сайт перенесен со старого сервера на виртуальный хостинг от Beget. Теперь файлы лежат на твердотельном накопителе. Версия PHP пока остается без изменений. Общая оценка производительности растет.
Замер 3. Хостинг на SSD, PHP 7.2:
Переключаем версию PHP-интерпретатора в настройках хостинга с 5.6 на 7.2. Общая оценка производительности растет еще больше.
* — на самом деле, этот тест не дает объективной информации о реальной производительности и может быть так, что сайт, набирающий 8 «условных единиц» в результатах работает намного быстрее сайта с 50 «условными единицами». Но изменения оценки по одному и тому же сайту позволяют грубо прикинуть динамику после проведенных работ по технической оптимизации.
Перевод сайта на PHP 7
На момент написания этой статьи актуальные версии Битрикса официально совместимы с PHP 7.2 и именно эту версию я и рекомендую использовать. При желании можно использовать 7.3 и 7.4, однако в таком случае админка битрикса будет постоянно сигнализировать об ошибках в работе некоторых модулей.
- Переключаем версию PHP-интерпретатора в настройках хостинга
Первым делом надо переключить версию PHP-интерпретатора на PHP 7.2 в административной панели хостинга. Расположение соответствующих настроек зависит от используемого хостинга, например, на Бегете для этого нужно зайти в панель «Сайты», щелкнуть на иконку шестеренки возле нужного доменного имени и выбрать желаемую версию PHP из выпадающего списка - Ждем применения настроек и проверяем работу сайта
После смены настроек необходимо дождаться их применения. Обычно настройки обновляются в течение 5-10 минут, после чего можно зайти на сайт и проверить его работоспособность. Если вы используете свежие версии Битрикса, то скорее всего процесс смены PHP-интерпретатора будет на этом завершен. Но если при попытке захода на сайт выдается белый экран или сообщение об ошибках, то идем дальше. - Меняем расширение mysql на mysqli
В старых версиях движка 1С-Битрикс для подключение к базам данных используется расширение mysql, которого нет в PHP 7. Для успешного перехода нужно поменять его на mysqli, что осуществляется через редактирование двух конфигурационных файлов:- В файле /bitrix/php_interface/dbconn.php добавляем в конец следующую строку:
define("BX_USE_MYSQLI", true);
- В файле /bitrix/.settings.php нужно найти строку
'className' => '\\Bitrix\\Main\\DB\\MysqlConnection',
И поменять ее на
'className' => '\\Bitrix\\Main\\DB\\MysqliConnection',
После редактирования файлов снова проверяем работу сайта.
- В файле /bitrix/php_interface/dbconn.php добавляем в конец следующую строку:
После перевода на PHP 7 сайт не работает. Возможные причины
Проблема: На сайте используются устаревшие модули или шаблоны
Решение 1: Обновить все модули из Маркетплейса
Решение 2: Самостоятельно или при помощи веб-разработчика найти в коде устаревшие и несовместимые с PHP 7 функции и переписать их
Проблема: Сайт работает, но встроенный тест постоянно выдает ошибки
Решение 1: Обновить Битрикс до актуальной версии
Решение 2: Игнорировать сообщения об ошибках, поскольку их появление обусловлено использованием несовместимого с некоторыми функциями PHP 7 модуля автотестирования в Битриксе 16 версии и старее.