Перейти к содержимому

Обновление платформы и PHP в 1С-Битрикс

Обновления - подтема на 54 вопроса из собранных, и почти все они об одном: после обновления что-то сломалось.

Что общего у этих задач

Порядок обновления односторонний: сначала платформа, потом PHP. Свежая версия продукта умеет работать на старом PHP, а старая на новом - нет. Обратный порядок и даёт большинство поломок: сайт остаётся с кодом, который новый PHP уже не принимает.

Ломается почти всегда не ядро, а свой код. Ядро обновляется целиком и приводится к совместимому виду, а /local/, шаблоны сайта и сторонние модули обновление не трогает. Именно там остаются вызовы функций, удалённых в новой версии PHP.

Обновление продукта пошаговое и необратимое. Оно накатывается порциями и пишет в базу, а штатного отката нет. Поэтому копия перед обновлением - не формальность, а единственный способ вернуться.

Обновления не копятся годами безнаказанно. Чем длиннее перерыв, тем больше шагов накатывается разом и тем труднее понять, какой из них сломал сайт.

С чего начать

Начинают с резервной копии и проверки, что она разворачивается. Копия, которую никто не пробовал восстановить, копией не считается.

Дальше повторяют обновление на стенде с той же версией PHP и тем же составом модулей. Стенд показывает большинство поломок до того, как их увидит покупатель.

Только после этого обновляют боевой сайт и проходят по чек-листу: витрина, оформление заказа, оплата, обмен и письма. Чек-лист готовят заранее, а не вспоминают в процессе.

Решения подтемы

Частые вопросы

Что обновлять первым - платформу или PHP?

Платформу. Свежая версия продукта работает и на старом PHP, а старая на новом обычно нет. Обратный порядок оставляет сайт с кодом, который новый интерпретатор уже не принимает.

Почему после обновления PHP отвалились только некоторые страницы?

Ядро обновление привело к совместимому виду, а свой код в /local/ и шаблонах - нет. Падают ровно те страницы, где работает этот код.

Можно ли откатить обновление продукта?

Штатно нет: обновление пишет в базу и накатывается порциями. Возврат возможен только из копии, снятой до начала.

Как проверить совместимость заранее?

Штатным проверочным скриптом платформы на копии сайта с целевой версией PHP. Он находит устаревшие вызовы в ядре и в модулях, но не в шаблонах: их проверяют прогоном по сайту.

Связанные темы

Первоисточники