Доработка и оптимизация

Переход сайта на PHP 8

Находим и правим код, который ломается на PHP 8, проверяем сайт на копии и переключаем боевой сервер. Время ответа страниц замеряем до и после перехода: обычно оно снижается, но насколько - зависит от сайта.

Смотреть кейсы
сначала проверяем на копии, потом переключаем
от 30 000 ₽

Точная смета - после брифа.

Проверка Сначала на копии сайта
Переключение В согласованное время
Откат Прежняя версия остается

Кому подходит

Хостинг отключает старую версию

Провайдер предупредил, что PHP 7 на тарифе перестанет работать

Нет обновлений безопасности

Старая версия PHP не получает исправлений, а ядро Битрикса просит новую

Нужен модуль под PHP 8

Решение из Маркетплейса или библиотека требуют версию, которой на сервере нет

Какие задачи решаем

Хостинг назвал дату, после которой старая версия PHP на тарифе работать не будет
Свой код и старые модули писались без расчета на PHP 8 и падают при переключении
Обновления ядра Битрикса не встают: версия рассчитана на окружение с PHP 8
Переключать версию на боевом сервере страшно: неизвестно, что именно отвалится

Что входит в работу

1

Проверка версий ядра и модулей

Смотрим версию и редакцию Битрикса и то, какие версии PHP она поддерживает
2

Тестовая копия сайта

Поднимаем копию сайта и базы на отдельном окружении с PHP 8, боевой не трогаем
3

Список несовместимого кода

Отчет по файлам и модулям: что падает, что пишет предупреждения, что решится обновлением
4

Проверка системы Битрикса

Штатный тест окружения показывает, что не проходит по требованиям новой версии
5

Правка своего кода

Кастомные компоненты, обработчики событий, агенты и шаблоны приводим к синтаксису PHP 8
6

Модули из Маркетплейса

Обновляем до версий с поддержкой PHP 8, для брошенных решений подбираем замену
7

Сторонние библиотеки

Поднимаем версии composer-зависимостей, которые на PHP 8 не работают
8

Прогон по чек-листу

На копии проверяем формы, корзину, оплату, обмен с 1С, письма и личный кабинет
9

Переключение боевого сервера

Меняем версию в согласованное время, прежняя версия остается доступной для отката
10

Замеры и наблюдение

Сравниваем время ответа страниц до и после, первые дни смотрим лог ошибок

Порядок перехода

1
Проверка версий и доступы Смотрим версию ядра, набор модулей, версию PHP и настройки сервера
2
Копия на PHP 8 Поднимаем тестовое окружение и включаем на нем PHP 8, боевой сайт работает как был
3
Список несовместимого Прогоняем сайт и собираем ошибки и предупреждения по файлам и модулям
4
Правки и обновления Правим свой код, обновляем ядро и модули до версий с поддержкой PHP 8
5
Повторный прогон Идем по чек-листу сценариев на копии, пока лог ошибок не станет чистым
6
Переключение на боевом Меняем версию PHP в согласованное время, проверяем ключевые страницы сразу после
7
Наблюдение и замеры Смотрим лог ошибок и сравниваем время ответа страниц с замерами до перехода первая неделя

Технологии и интеграции

PHP 8

Целевую минорную версию подбираем под требования ядра Битрикса и хостинга

1С-Битрикс

Обновляем ядро до версии, в которой PHP 8 поддерживается штатно

Проверка системы

Штатный тест Битрикса по требованиям к окружению и настройкам PHP

Лог ошибок PHP

Видно файл и строку, где код падает после переключения версии

Тестовое окружение

Копия сайта и базы на отдельном адресе, закрытая от посетителей и поиска

Git

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

Часто задаваемые вопросы

Цена зависит от объема своего кода и от числа модулей из Маркетплейса. Сайт-визитка на штатных компонентах переходит за несколько часов, интернет-магазин с обменом с 1С и кастомной корзиной - это уже недели работы. Дороже всего выходят очень старые версии ядра и модули, которые автор больше не поддерживает. Смету называем после проверки на копии: к этому моменту видно список несовместимых мест, а не общие предположения.

Нужны доступы к хостингу и в админку сайта и возможность поднять копию: место на сервере или отдельный тестовый хостинг. Еще полезен список сценариев, которые обязательно должны работать, - оплата, обмен с 1С, личный кабинет, рассылки. Если сайт ведет ваш системный администратор, нужен контакт с ним: переключение версии делается на его стороне или вместе с ним.

Обычно время ответа страниц снижается, потому что PHP 8 исполняет код быстрее. Насколько - зависит от сайта: если узкое место в тяжелых запросах к базе или в отключенном кеше, переход даст немного. Поэтому замеряем время ответа ключевых страниц до и после и показываем цифры. Если после перехода сайт все еще медленный, это отдельная задача по оптимизации скорости.

В большинстве случаев да, после правки несовместимых мест. Проблема встречается с модулями, которые автор перестал поддерживать: они не работают на PHP 8 и обновить их нечем. Тогда подбираем замену из Маркетплейса или переписываем нужную часть логики своими компонентами. Это видно уже на проверке копии, до того как что-то менять на боевом.

Как правило да: Битрикс ограничил поддержку версий PHP младше 8 в 2023 году, и обновления ядра рассчитаны на новое окружение. Поэтому порядок такой: сначала обновляем ядро и модули на копии, потом переключаем версию PHP. Если ядро очень старое, обновление идет в несколько шагов и занимает основную часть работы.

Не советуем: часть ошибок проявляется только на реальных сценариях - в оформлении заказа, при обмене с 1С, в отправке писем. На боевом сервере это увидят посетители, а логи придется разбирать под давлением. Сначала копия и чек-лист, потом переключение боевого в согласованное время, когда посещаемость минимальная.

Первую неделю смотрим лог ошибок и сравниваем время ответа страниц с замерами до перехода. Прежняя версия PHP остается на сервере, поэтому при неожиданной ошибке сайт можно вернуть на нее и доправить код на копии. 30 дней после переключения ошибки по нашей части правим бесплатно.

Проверим переход на PHP 8

Пришлите доступ к сайту - поднимем копию, проверим совместимость и назовем объем правок.

Заявка отправлена

Разберем задачу и ответим Вам в ближайшее время.