Пошаговая инструкция по переходу сайтов на 1С-Битрикс на PHP 8.x: идеальный и нестандартный методы
«Битрикс» обновил все свои модули и штатные компоненты для работы с PHP 8 и активно принуждает разработчиков сторонних решений обновить код своих продуктов. Вплоть до удаления решения, если оно не поддерживает 8-ю версию. При этом выполнить переход сайта с CMS Bitrix на PHP 8.x не так просто, как кажется на первый взгляд.
Почему важно обновить PHP
Если вы используете сайт под управлением 1С-Битрикс любой редакции и ваш сайт работает на PHP версии ниже 8.0 — вы можете лицезреть вот такую надпись в админ панели своего сайта:
Версия PHP 7.х объявлена устаревшей и больше не поддерживается, для нее не выпускаются исправления функциональных ошибок и ошибок безопасности. Использование версий PHP ниже 8 крайне нерекомендовано.
Вы не сможете установить обновления продуктов «1С-Битрикс» для исправления ошибок и получения нового функционала, пока не обновите PHP до минимальной версии 8.0 или рекомендованной 8.1 в своем серверном окружении.
Что делать
На первый взгляд очевидно, что нужно просто перейти на работу сервера в связке с PHP 8-ой версии. Ок. Идем в панель управления хостингом. Находим наш сайт, переходим в настройки и выбираем нужную версию PHP. Можно выбрать сразу 8.2 последнюю. к примеру, в панели ispmanager это делается здесь:
Переходим на сайт для проверки и с вероятностью 99,99% ваш сайт сломается или вообще выдаст белый экран.
В чем проблема и болезненность перехода
Все просто. В новой версии PHP немного изменились требования к написанию кода и то, что разрешалось в версии 7.4, например, теперь вызывает ошибку и сайт ломается. Получается для работы сайта необходимо, чтобы весь код соответствовал новым требованиям. Как известно Битрикс — это система управления, состоящая по большей части из ядра и публичной части. С ядром все понятно, но остается сторонний код: это и шаблон, и свои компоненты, и сторонние модули, установленные из Макретплейса Битрикс. Вот в них и заключается вся боль.
Мы рассмотрим два сценария обновления сайта. Первый — идеальный (правильный, рекомендуемый), а второй — нестандартный (комбинированный метод)
Идеальный вариант: последовательность шагов
1. Так как «Битрикс» уже все обновил и настроил под использование 8-ки, прежде чем изменять настройки сервера, мы должны обновить ядро через стандартный функционал «Битрикс». Естественно для этого у вас должна быть активная поддержка на решение. Если нет, и вы видите надпись, что срок поддержки вашей лицензии окончен, то необходимо продлить ее, купив за 25% от стоимости лицензии. Редакцию вашей лицензии вы можете увидеть все в том же разделе /bitrix/admin/update_system.php?lang=ru в секции «Ответ сервера обновлений».
2. Теперь переходим в установленные решения.
В этом разделе нас интересуют все сторонние решения, установленные на сайте. Их необходимо также обновить. Конечно, есть платные и бесплатные решения. Бесплатные обновляем, а на платных смотрим срок поддержки активен или нет. Если нет, то каждое решение необходимо продлить. Условия продления могут быть разными, но обычно это 50% от стоимости решения. Подробнее вы можете посмотреть на странице Маркетплейса, кликнув по названию этого решения.
3. После обновления ядра и всех сторонних модулей переходим к тому, с чего начинали: производим настройку на стороне хостинга, выставив нужную версию.
Результат: Если сайт небольшой, относительно новый и создавался с использованием стандартных компонентов Битрикс (с минимальными внесениями изменений) или на каком-либо готовом решении, то он запустится без каких-либо проблем. К сожалению, за нашу практику мы ни разу не встретили сайт, который достаточно просто обновить. Так что нам такой вариант не подходит. Поэтому мы работаем по второму сценарию.
Нестандартный (комбинированный) метод: последовательность шагов
Данный метод пригодится если у вас:
- свой уникальный шаблон;
- кастомные компоненты;
- решения, не поддерживаемые более разработчиками, но необходимые вам для работы (например, решение «Аспро Медицинский центр 2.0» официально не поддерживается более разработчиком, и к нему не выпускаются никакие обновления);
- вносились правки в ядро;
- нет желания или возможности продлевать решение по какой-либо другой причине, например, потому что слишком дорого.
С этим нам чаще всего и приходится работать.
Сразу оговоримся, лицензия на решение 1С-Битрикс у вас должна быть активной в любом случае. Вносить правки в ядро — отчаянный шаг.
1. Создаем полную резервную копию сайта.
2. Обновляем ядро, как и в рекомендуемом способе. Если вы вносили изменения в ядре или штатных компонентах, то вам необходимо перенести все измененные файлы в папку local.
3. Переходим в установленные решения и обновляем все, что можно обновить. Если и сторонние решения правили, то переносим все изменения и доработки в local-папку.
4. Далее включаем вывод ошибок в настройках, файл /bitrix/.settings.php.
5. Затем настраиваем хостинг и активируем 8-ку.
6. После переходим на сайт и видим ошибки. Читаем текст ошибки и вносим изменения в файлы указанные в тексте ошибки. Информации по типовым ошибкам море. Вот лишь несколько примеров, которых будет достаточно для практически любого сайта:
- https://helpdesk.bitrix24.ru/open/17332020/
- https://www.brekot.ru/blog/1s-bitriks-i-php-8/
- https://www.sng-it.ru/snippet/oshibki-pri-perekhode-sayta-na-bitrikse-na-php-8-1.html
От себя можем добавить некоторые тонкости, которых нет в описанных выше мануалах.
- Если вы не видите ошибок, а видите белый экран, ищите их в исходном коде (Ctrl + U).
- Просмотрите все страницы вашего сайта. На каждой странице может использоваться разный функционал и если у вас типовая услуга, то это не значит, что, устранив проблемы на одной странице, вы избавитесь от других.
- Обязательно проверьте интерактив сайта, попробуйте произвести все функциональные тесты: отправить форму, проверить калькуляторы, воспользоваться поиском по сайту.
- Проверьте ошибки в консоли (F12).
- Проведите проверку системы штатным инструментом /bitrix/admin/site_checker.php?lang=ru. Здесь может оказаться много подсказок в случае проблем.
Описанное выше может решить штатный администратор сайта. Углубляться детальнее нет смысла. Более сложные моменты требуют специальных знаний.
Таким способом мы уже перевели на новые рельсы практически всех наших клиентов. А теперь решили поделиться инструкцией. И если понадобится, готовы помочь реализовать ее. Кстати, digital-агентство «Винтра» — золотой сертифицированный партнер 1С-Битрикс, а также официальный партнер «Аспро».