Обновление платформы и PHP в 1С-Битрикс
Обновления - подтема на 54 вопроса из собранных, и почти все они об одном: после обновления что-то сломалось.
Что общего у этих задач
Порядок обновления односторонний: сначала платформа, потом PHP. Свежая версия продукта умеет работать на старом PHP, а старая на новом - нет. Обратный порядок и даёт большинство поломок: сайт остаётся с кодом, который новый PHP уже не принимает.
Ломается почти всегда не ядро, а свой код. Ядро обновляется целиком и
приводится к совместимому виду, а /local/, шаблоны сайта и сторонние модули
обновление не трогает. Именно там остаются вызовы функций, удалённых в новой
версии PHP.
Обновление продукта пошаговое и необратимое. Оно накатывается порциями и пишет в базу, а штатного отката нет. Поэтому копия перед обновлением - не формальность, а единственный способ вернуться.
Обновления не копятся годами безнаказанно. Чем длиннее перерыв, тем больше шагов накатывается разом и тем труднее понять, какой из них сломал сайт.
С чего начать
Начинают с резервной копии и проверки, что она разворачивается. Копия, которую никто не пробовал восстановить, копией не считается.
Дальше повторяют обновление на стенде с той же версией PHP и тем же составом модулей. Стенд показывает большинство поломок до того, как их увидит покупатель.
Только после этого обновляют боевой сайт и проходят по чек-листу: витрина, оформление заказа, оплата, обмен и письма. Чек-лист готовят заранее, а не вспоминают в процессе.
Решения подтемы
- Ошибка после обновления PHP - белый экран, ошибка 500, отвалившиеся модули.
- Обновление продукта: подготовка, порядок, откат - копия до обновления, порядок с PHP, долгий перерыв, сбои.
- Переход на новую версию PHP: порядок, проверки, откат - сначала ядро, свой код, переключение средствами окружения.
- Обновления не устанавливаются: ключ, срок, доступ, права - ключ и купон, срок продления, доступ наружу, права.
- Редакция продукта: ограничения, переход на старшую, ключ - набор модулей и число сайтов, проверка модуля из кода, переход.
- Обновление платформы изнутри: шаги, файлы, откат - система обновлений, проверка лицензии, шаги, файлы и база, откат.
- Обновления в закрытом контуре: прокси и пакет вручную - проверка выхода наружу, прокси, индивидуальный пакет, установка.
- После обновления отвалился функционал: разбор причин - затёртые правки ядра, удалённые методы, несовместимое решение, SQL-шаги, кэш.
Частые вопросы
Что обновлять первым - платформу или PHP?
Платформу. Свежая версия продукта работает и на старом PHP, а старая на новом обычно нет. Обратный порядок оставляет сайт с кодом, который новый интерпретатор уже не принимает.
Почему после обновления PHP отвалились только некоторые страницы?
Ядро обновление привело к совместимому виду, а свой код в /local/ и шаблонах - нет. Падают ровно те страницы, где работает этот код.
Можно ли откатить обновление продукта?
Штатно нет: обновление пишет в базу и накатывается порциями. Возврат возможен только из копии, снятой до начала.
Как проверить совместимость заранее?
Штатным проверочным скриптом платформы на копии сайта с целевой версией PHP. Он находит устаревшие вызовы в ядре и в модулях, но не в шаблонах: их проверяют прогоном по сайту.
Связанные темы
- Сервер и поиск - устройство сервера целиком
- BitrixVM и веб-окружение - какие версии PHP несёт окружение
- Резервные копии и перенос сайта - копия перед обновлением
- Раздел Инфраструктура