Доработка и оптимизация
Переход сайта на PHP 8
Находим и правим код, который ломается на PHP 8, проверяем сайт на копии и переключаем боевой сервер. Время ответа страниц замеряем до и после перехода: обычно оно снижается, но насколько - зависит от сайта.
сначала проверяем на копии, потом переключаемТочная смета - после брифа.
Кому подходит
Хостинг отключает старую версию
Провайдер предупредил, что PHP 7 на тарифе перестанет работать
Нет обновлений безопасности
Старая версия PHP не получает исправлений, а ядро Битрикса просит новую
Нужен модуль под PHP 8
Решение из Маркетплейса или библиотека требуют версию, которой на сервере нет
Какие задачи решаем
Что входит в работу
Проверка версий ядра и модулей
Смотрим версию и редакцию Битрикса и то, какие версии PHP она поддерживаетТестовая копия сайта
Поднимаем копию сайта и базы на отдельном окружении с PHP 8, боевой не трогаемСписок несовместимого кода
Отчет по файлам и модулям: что падает, что пишет предупреждения, что решится обновлениемПроверка системы Битрикса
Штатный тест окружения показывает, что не проходит по требованиям новой версииПравка своего кода
Кастомные компоненты, обработчики событий, агенты и шаблоны приводим к синтаксису PHP 8Модули из Маркетплейса
Обновляем до версий с поддержкой PHP 8, для брошенных решений подбираем заменуСторонние библиотеки
Поднимаем версии composer-зависимостей, которые на PHP 8 не работаютПрогон по чек-листу
На копии проверяем формы, корзину, оплату, обмен с 1С, письма и личный кабинетПереключение боевого сервера
Меняем версию в согласованное время, прежняя версия остается доступной для откатаЗамеры и наблюдение
Сравниваем время ответа страниц до и после, первые дни смотрим лог ошибокПорядок перехода
Технологии и интеграции
PHP 8
Целевую минорную версию подбираем под требования ядра Битрикса и хостинга
1С-Битрикс
Обновляем ядро до версии, в которой PHP 8 поддерживается штатно
Проверка системы
Штатный тест Битрикса по требованиям к окружению и настройкам PHP
Лог ошибок PHP
Видно файл и строку, где код падает после переключения версии
Тестовое окружение
Копия сайта и базы на отдельном адресе, закрытая от посетителей и поиска
Git
Правки идут отдельными коммитами, вернуть прежний код можно на каждом шаге
Часто задаваемые вопросы
Цена зависит от объема своего кода и от числа модулей из Маркетплейса. Сайт-визитка на штатных компонентах переходит за несколько часов, интернет-магазин с обменом с 1С и кастомной корзиной - это уже недели работы. Дороже всего выходят очень старые версии ядра и модули, которые автор больше не поддерживает. Смету называем после проверки на копии: к этому моменту видно список несовместимых мест, а не общие предположения.
Нужны доступы к хостингу и в админку сайта и возможность поднять копию: место на сервере или отдельный тестовый хостинг. Еще полезен список сценариев, которые обязательно должны работать, - оплата, обмен с 1С, личный кабинет, рассылки. Если сайт ведет ваш системный администратор, нужен контакт с ним: переключение версии делается на его стороне или вместе с ним.
Обычно время ответа страниц снижается, потому что PHP 8 исполняет код быстрее. Насколько - зависит от сайта: если узкое место в тяжелых запросах к базе или в отключенном кеше, переход даст немного. Поэтому замеряем время ответа ключевых страниц до и после и показываем цифры. Если после перехода сайт все еще медленный, это отдельная задача по оптимизации скорости.
В большинстве случаев да, после правки несовместимых мест. Проблема встречается с модулями, которые автор перестал поддерживать: они не работают на PHP 8 и обновить их нечем. Тогда подбираем замену из Маркетплейса или переписываем нужную часть логики своими компонентами. Это видно уже на проверке копии, до того как что-то менять на боевом.
Как правило да: Битрикс ограничил поддержку версий PHP младше 8 в 2023 году, и обновления ядра рассчитаны на новое окружение. Поэтому порядок такой: сначала обновляем ядро и модули на копии, потом переключаем версию PHP. Если ядро очень старое, обновление идет в несколько шагов и занимает основную часть работы.
Не советуем: часть ошибок проявляется только на реальных сценариях - в оформлении заказа, при обмене с 1С, в отправке писем. На боевом сервере это увидят посетители, а логи придется разбирать под давлением. Сначала копия и чек-лист, потом переключение боевого в согласованное время, когда посещаемость минимальная.
Первую неделю смотрим лог ошибок и сравниваем время ответа страниц с замерами до перехода. Прежняя версия PHP остается на сервере, поэтому при неожиданной ошибке сайт можно вернуть на нее и доправить код на копии. 30 дней после переключения ошибки по нашей части правим бесплатно.