Переход на PHP 8

Не работает сайт на Битрикс после перехода на PHP 8? Вот в чём может быть дело

Переход на современную версию PHP 8 — это важный шаг для повышения производительности и безопасности вашего сайта. Однако, если после смены версии ваш Bitrix-сайт перестал работать, показывает «белый экран» или критические ошибки, вы не одиноки. Проблема кроется в совместимости. Давайте разберёмся, где искать корень зла.


Основные причины несовместимости

Ядро «1С-Битрикс» активно развивается и уже достаточно хорошо адаптировано под PHP 8.0 и выше. Но проблемы чаще всего возникают не с самим ядром, а с его окружением.

Устаревшая версия Битрикс

Это первое, на что стоит обратить внимание. Ранние версии продукта (например, 18.x и ниже) просто не были рассчитаны на работу с PHP 8.

  • Решение: Обновите систему до актуальной версии. Проверьте официальную таблицу совместимости на сайте Битрикс. Для стабильной работы с PHP 8.1 и выше требуется как минимум Bitrix Framework 20.0.1200 и новее. Всегда делайте резервную копию сайта и базы данных перед обновлением.


Проблемы со сторонними модулями и пользовательским кодом

Самая распространённая причина. Многие модули от сторонних разработчиков, а также написанные специально для вашего проекта дочерние модули и классы, могут использовать устаревшие конструкции PHP, которые были удалены или стали вызывать ошибки в PHP 8.

Какие ошибки чаще всего встречаются:

  1. Передача параметров в функцию по ссылке:
    Раньше это было распространено, но в PHP 8 такие вызовы вызывают фатальную ошибку.

    // Старый, неработающий код:
    function myFunction(&$argument) { ... }
    myFunction(&$var); // Ошибка в PHP 8
  2. Несовместимость объявлений типов:
    PHP 8 стал строже относиться к типам данных. Если функция ожидает строку, а ей передают массив — это вызовет TypeError.

  3. Использование неопределённых констант:
    Раньше неопределённая константа интерпретировалась как строка с её именем. Теперь это вызывает предупреждение.

    // Раньше: echo MY_UNDEFINED_CONSTANT; выводило 'MY_UNDEFINED_CONSTANT'
    // Сейчас: выводится предупреждение, которое может сломать вывод.

Как диагностировать и исправить проблему

Не нужно гадать на кофейной гуще. Включите отладку и получите точную информацию об ошибке.

Включите показ ошибок PHP

Добавьте в файл bitrix/.settings.php (или php.ini, если у вас есть к нему доступ) следующие директивы:

'value' => [
    'error_reporting' => E_ALL,
    'display_errors' => 'On',
    'display_startup_errors' => 'On',
],

После этого обновите страницу сайта. Вы увидите не просто «белый экран», а конкретное сообщение об ошибке с указанием файла и строки.


Анализ логов

Вся информация об ошибках также записывается в лог-файлы. Проверьте:

  • Логи веб-сервера (Apache/Nginx).

  • Файл /bitrix/modules/bitrix.log (если включена запись логов модулей).

  • Стандартный лог ошибок PHP, путь к которому можно узнать в php.ini (директива error_log).


Проверьте Административную панель

Если сайт не работает «на фронте», но административная панель (/bitrix/) доступна, зайдите в неё. Система может показать уведомления о несовместимых модулях. Перейдите в «Настройки» → «Настройки продукта» → «Обновление платформы» → «Проверить совместимость». Этот инструмент поможет выявить проблемные модули.


План действий по решению проблемы

  1. Сделайте полную резервную копию.

  2. Временно откатитесь на предыдущую стабильную версию PHP (например, 7.4), чтобы вернуть сайт в рабочее состояние.

  3. Обновите ядро «1С-Битрикс» до актуальной версии.

  4. Обновите все установленные модули, особенно сторонние.

  5. Включите показ ошибок и перейдите на PHP 8. Проанализируйте, какие ошибки появляются.

  6. Для кастомного кода вам потребуется помощь программиста. Покажите ему ошибки из логов — он сможет исправить код, приведя его в соответствие со стандартами PHP 8.


Вывод

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

Стоимость
Перевод сайта на 1С-Битрикс на PHP 8
Модернизация и оптимизация вашего проекта
Анализ текущей версии PHP и совместимости
Обновление 1С-Битрикс и адаптация кода
Тестирование совместимости модулей
Комплексное тестирование и оптимизация
Все работы «под ключ»
от 45 000 ₽
Заказать