CMS-битва: за кого вы?

Переход на PHP 8 на 1С‑Битрикс — пошагово и без стресса

Оглавление

Переход на PHP 8 на 1С‑Битрикс — пошагово и без стресса

Переходить на новую версию PHP всегда звучит тревожно — особенно когда речь про сайт на 1С-Битрикс. Слетит ли что-то? Поддерживается ли мой модуль? Будет ли белый экран? Как узнать, готов ли хостинг? И главное — можно ли это сделать без лишней боли и затрат?

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

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

Почему важно обновиться на PHP 8

Чем грозит старая версия PHP

PHP 7.4 больше не получает обновлений и считается устаревшей. Ни исправлений ошибок, ни закрытия уязвимостей. Сайт может продолжать работать, но это уже в зоне риска.

Системное предупреждение в панели управления Bitrix о необходимости перехода на PHP 8
Bitrix предупреждает: при использовании устаревшего PHP 7.4.29 вы не получаете обновлений продукта и системы безопасности. Обновление до PHP 8 обязательно для продолжения поддержки.

Сценарий из практики: клиент обновил модуль в маркетплейсе и получил белый экран. В логах — ошибка count(): Parameter must be an array. Причина — старая версия PHP не поддерживает код, написанный под 8.x.

Что может пойти не так:

  • Доступ в админку пропадает из-за несовместимых модулей;
  • На сайте появляются критические ошибки после обновлений;
  • Возрастает риск взлома через открытые уязвимости;
  • Bitrix и разработчики отказывают в поддержке — "обновитесь сначала";
  • Новые интеграции не проходят из-за несоответствия окружения.

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

Выбор версии PHP в панели управления хостингом
Если на хостинге больше нет возможности выбрать PHP 7.4 — переход становится не просто желательным, а обязательным.

Когда переход обязателен

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

  • Обновления ядра CMS требуют как минимум PHP 8.0
  • Часть новых модулей не поддерживается на PHP 7.4
  • Служба технической поддержки Bitrix может отказать в разборе ошибок, если не соблюдены требования окружения
  • Marketplace фильтрует решения по совместимости — часть просто не отображается
  • При попытке обновиться могут возникать ошибки и фатальные сбои, особенно в связке с кастомным кодом

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

Поддержка Bitrix и marketplace

Bitrix как система развивается: выходят новые модули, обновляются компоненты, оптимизируется производительность. Но всё это работает только при соблюдении системных требований. И PHP 8 — это теперь стандарт, без которого ни одно обновление не гарантирует стабильности.

  • Marketplace ориентируется на PHP 8 и выше — многие модули больше не тестируются под старые версии;
  • Обновления ядра Bitrix требуют поддержку новых конструкций языка PHP;
  • Автоматическая установка новых решений может завершиться ошибкой при несоответствии версии PHP;
  • Официальная техническая поддержка Bitrix не рассматривает баги, возникающие на устаревших интерпретаторах;
  • Даже внутренние инструменты (например, Site Checker или монитор производительности) могут работать с ограничениями.

В документации Bitrix прямо указано: минимальная поддерживаемая версия PHP — 8.0. Всё, что ниже, не гарантирует работоспособности CMS и может конфликтовать с обновлениями.

Кому точно стоит перейти прямо сейчас

Обновление PHP до версии 8 — это не просто “хорошая идея”, а необходимость для тех, кто работает с живыми проектами, рассчитывает на стабильность, поддержку и развитие сайта. Особенно это критично, если ты:

  • Редактируешь или обновляешь модули;
  • Добавляешь новую функциональность или интеграции;
  • Поддерживаешь интернет-магазин или CRM-нагруженный сайт;
  • Обновляешь ядро CMS и компоненты Bitrix;
  • Работаешь с внешними API и выгрузками из 1С.

Вот наглядное сравнение ситуаций:

Старый PHP (7.4) Актуальный PHP (8.0+)
Нет поддержки и обновлений; Поддерживается CMS и Marketplace;
Уязвимости не закрываются; Работа в безопасном окружении;
Ошибка при установке новых модулей; Поддержка новых решений из Marketplace;
Конфликты при обновлении ядра; Корректная работа всех компонентов;
Отказ в технической поддержке; Полноценная поддержка от Bitrix и разработчиков.
Минимальные технические требования для работы сайта на Bitrix с PHP 8
Минимальные технические требования для корректной работы сайта на PHP 8: поддерживаемая версия Bitrix, модули и окружение на стороне хостинга.

Если проект для тебя — рабочий инструмент, а не просто “чтобы было” — переход на PHP 8 нужно планировать заранее. Это не про версию ради галочки, а про производительность, безопасность и развитие.

Как подготовиться к переходу

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

  • Сделать полную резервную копию: файлы сайта и база данных;
  • Создать тестовую копию сайта (на поддомене или в другом каталоге);
  • Обновить ядро “1С-Битрикс” и все установленные модули через Marketplace;
  • Проверить наличие кастомных модулей или стороннего кода в папке /local/;
  • Убедиться, что сайт не использует устаревшие конструкции PHP;
  • Проверить требования к новой версии PHP в официальной документации;
  • Выяснить, поддерживает ли текущий хостинг PHP 8 и какая именно версия доступна.

Не переходи на боевом сайте без подготовки. Даже если кажется, что "и так сойдёт", — ошибки могут быть неочевидны сразу, но привести к потере заказов или данных.

С чего начать: бэкапы и dev-сервер

Первое, что нужно сделать перед переходом — обезопасить себя. Даже если ты уверен в коде, модулях и хостинге, ошибка может вылезти в самый неожиданный момент. Резервная копия — это страховка, без которой не стоит начинать.

Сделай полный бэкап:

  • Файлы сайта (весь /www или /public_html);
  • Базу данных (лучше через phpMyAdmin или встроенную утилиту хостинга);
  • Если на сайте есть пользовательские загрузки — проверь, чтобы они не лежали вне основного каталога.
Создание резервной копии сайта на хостинге перед переходом на PHP 8
Перед переходом обязательно создайте полный бэкап сайта через панель хостинга — включая файлы и базу данных. Это позволит откатиться в случае ошибки.

Рекомендую создать тестовую копию сайта на поддомене или в отдельной папке — и отработать весь переход сначала там. Это снизит риски и даст понимание, как сайт отреагирует на новое окружение.

Если используешь dev-копию, не забудь закрыть её от индексации и сменить параметры доступа в .htaccess или robots.txt, чтобы не словить дубль в поиске.

Обновление ядра и модулей

Перед сменой версии PHP нужно убедиться, что сайт обновлён до последней версии ядра и все модули соответствуют требованиям Bitrix. Старые версии часто вызывают errors при работе с PHP 8 — особенно если используют устаревшие синтаксические конструкции.

  • Зайди в административную панель и открой Marketplace → Обновление платформы;
  • Обнови ядро Bitrix (оно отображается первым в списке);
  • Установи все обновления для модулей (особенно сторонние и критические) Marketplace → Обновление решений;
  • Проверь статус обновления в Настройки → Инструменты → Проверка системы;
  • Если используешь кастомные модули — посмотри, не наследуют ли они устаревшие классы или методы.
Ошибка в разделе обновлений сторонних решений Bitrix при неправильном адресе сервера
Ошибка [WRONG_SERVER_W] возникает, если в настройках указан некорректный адрес сервера обновлений. Перед переходом на PHP 8 важно устранить такие сбои и убедиться, что система может получать актуальные версии модулей.

После обновления ядра Bitrix рекомендую протестировать /local/php_interface/init.php — там часто прячутся несовместимые вызовы.


// Пример устаревшего вызова
$arResult = count($items); // вызовет ошибку, если $items = null

// Правильный вариант
$arResult = is_array($items) ? count($items) : 0;
Настройка адреса сервера обновлений Bitrix в разделе настроек модуля
Чтобы устранить ошибку [WRONG_SERVER_W], в настройках модуля нужно изменить адрес сервера с www.bitrixsoft.com на www.1c-bitrix.ru. Без этого обновления модулей и ядра будут недоступны.

Проверка сторонних решений и кастомных модулей

Даже если ядро Bitrix и официальные модули обновлены, проблемы часто прячутся в сторонних решениях — особенно тех, что не обновлялись несколько лет. Некоторые из них используют функции, которые были удалены или изменены в PHP 8.

Чтобы избежать фатальных ошибок при переходе:

  • Зайди в Marketplace → Установленные решения и проверь дату последнего обновления модулей;
  • Удалите или отключите те, что не поддерживаются разработчиком или давно не обновлялись;
  • Особое внимание обрати на модули для интеграций, SEO, импорта/экспорта и корзины — именно они чаще всего вызывают ошибки;
  • Проверь, есть ли кастомные модули в папке /local/modules/ и не содержат ли они нестандартный код;
  • При необходимости проконсультируйся с разработчиком — или выдели время на рефакторинг кода вручную.
Список установленных решений Bitrix с устаревшими модулями и датами последних обновлений
Перед переходом на PHP 8 проверь список установленных решений. Если модуль не обновлялся более года — есть риск несовместимости с новой версией интерпретатора.

Некоторые сторонние модули могут использовать устаревшие вызовы функций или обращаться к переменным без проверки. Чтобы это выявить заранее, можешь прогнать сайт через PHPStan.


// Пример проблемного кода
if ($_SERVER["REQUEST_METHOD"] == "POST")
    $data = json_decode($_POST["payload"]);

// Более безопасный вариант
if ($_SERVER["REQUEST_METHOD"] === "POST" && isset($_POST["payload"]))
    $data = json_decode($_POST["payload"]);

Требования к хостингу и серверу

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

  • Поддержка PHP 8.0, 8.1 или 8.2 в панели управления (оптимально — 8.1);
  • Возможность вручную выбирать версию PHP для каждого сайта;
  • Наличие расширений: mbstring, json, curl, openssl, zip, gd, intl и dom;
  • Поддержка InnoDB (Bitrix теперь использует его по умолчанию);
  • Установка лимитов: memory_limit от 512M, post_max_size и upload_max_filesize от 64M;
  • Возможность редактировать php.ini или создавать .user.ini в корне сайта.

Если не знаешь, какие параметры сейчас активны — создай файл phpinfo.php с содержимым:


<?php
phpinfo();

Загрузи его в корень сайта и открой в браузере, чтобы увидеть текущее состояние окружения.

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

Редактор php.ini с настройками для CMS Bitrix
Пример пользовательских директив в панели управления хостинга . При переходе на PHP 8 важно задать нужные лимиты и параметры, особенно memory_limit, max_input_vars и display_errors для отладки.

Как перейти: два подхода — классический и безопасный

Когда всё подготовлено — можно переходить к главному. Здесь есть два пути: классический и безопасный. Они зависят от уровня риска, нагрузки на сайт и того, насколько кастомный у тебя проект.

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

Классический путь (прямой переход)

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

Рискованно, но работает, если проект простой. Не подходит для интернет-магазинов и сайтов с большим трафиком — возможны ошибки, которые проявятся не сразу.

Безопасный путь (на копии сайта)

  • Клонируешь сайт на поддомен или в папку /dev;
  • Ставишь там нужную версию PHP и всё настраиваешь;
  • Тестируешь: админку, публичную часть, формы, фильтры, поиск;
  • Фиксишь ошибки и предупреждения заранее;
  • После успешного теста — повторяешь те же шаги на основном домене.

Такой подход снижает риск до минимума, а если ты работаешь в команде — dev-среда обязательна: никто не хочет отлаживать критичный баг на живом сайте.

Для наглядности — сравнение двух сценариев перехода:

Классический путь Безопасный путь
Смена PHP на основном сайте Смена PHP на копии (dev-сервер)
Ошибки видны сразу на боевом проекте Ошибки устраняются в тестовой среде
Риск потери работоспособности при ошибке Риски сведены к минимуму
Требует минимум времени Требует больше времени, но безопаснее
Подходит для простых сайтов Рекомендуется для сайтов - каталогов и выше

Пошаговая инструкция по переходу

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

Инструкция универсальна: все шаги можно выполнить через хостинг-панель без доступа к консоли. Подходит для сайтов на Bitrix без VPS и серверов.

Шаг 1: Проверка и подготовка

Перед тем как менять версию PHP, нужно убедиться, что сайт и окружение готовы. Этот шаг — основа для дальнейших действий. Лучше потратить 10 минут сейчас, чем час — на восстановление после “белого экрана”.

  • Обнови ядро Bitrix и все модули в Marketplace → Обновление платформы;
  • Убедись, что нет устаревших или конфликтных решений (особенно в /local/modules/);
  • Сделай резервную копию сайта: база данных и все файлы;
  • Создай файл phpinfo.php с содержимым:

<?php
phpinfo();

Открой его в браузере и проверь, что текущая версия PHP и все модули соответствуют требованиям.

Особое внимание — кастомным скриптам. Если ты или кто-то из разработчиков писал код без проверки типов (например, без is_array() перед count()) — они слетят. Это критично.

Сводка информации о версии PHP 8.1 и параметрах сборки через phpinfo
Сводка информации о версии PHP 8.1 и параметрах сборки через phpinfo()

Шаг 2: Смена версии PHP

После того как вы убедились, что сайт действительно работает на устаревшей версии PHP (например, 7.4), следующим шагом будет её обновление до актуальной — 8.1 или 8.2. Для Bitrix важно выбирать стабильную версию, которая официально поддерживается платформой.

На большинстве хостингов смена версии PHP делается в панели управления — в разделе «Настройки PHP» или «Версия PHP для сайта». Просто выберите нужную версию из выпадающего списка и сохраните изменения:

Выбор версии PHP в панели управления хостингом
Пример смены версии PHP в панели управления хостингом. Рекомендуется выбрать PHP 8.1 или выше, если Bitrix и используемые модули совместимы.

После переключения важно проверить файл phpinfo(), чтобы убедиться, что система подхватила новую версию корректно. Также проверьте:

  • Загружается нужный php.ini (указан в поле Loaded Configuration File);
  • Включены все необходимые модули для Bitrix: mbstring, pdo_mysql, zip, openssl и другие;
  • Нет ошибок при открытии страниц сайта или в логах.

Если возникнут ошибки — проверьте логи, конфигурацию php.ini и модули. При необходимости можно временно вернуть старую версию и провести диагностику.

Шаг 3: Перевод CRON-агентов на PHP 8

Если на вашем сайте используются CRON-агенты (например, регулярные задачи, которые запускаются через планировщик), важно не забыть обновить путь к новой версии PHP и для них. Иначе даже после смены версии на хостинге агенты продолжат выполняться под старой версией PHP, что приведёт к ошибкам или сбоям.

Обычно путь к PHP указывается в кроне напрямую, вот так:

*/5 * * * * /usr/bin/php -f /home/user/public_html/bitrix/modules/main/tools/cron_events.php

После перехода на PHP 8 проверь путь к новой версии PHP командой:

which php

На современных хостингах путь к PHP 8 может выглядеть, например, так:

/opt/php8.1/bin/php

Итоговая строка в crontab -e должна выглядеть так:

*/5 * * * * /opt/php8.1/bin/php -f /home/user/public_html/bitrix/modules/main/tools/cron_events.php

Если вы используете несколько разных cron-задач — обновите путь ко всем, где используется PHP.

Если забыть обновить путь к PHP, часть функционала сайта (например, агенты или рассылки) может работать нестабильно или вовсе остановиться. Будьте внимательны.
Пример настройки CRON-агентов с указанием версии PHP 8.1
Пример настройки CRON-агентов с явным указанием пути до PHP 8.1 — это важно после обновления версии.

Шаг 4: Проверка модулей и совместимости кода

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

Совет: Если используете маркетплейс 1С-Битрикс — проверьте, когда последний раз обновлялся модуль. Всё, что старше 2021 года — под подозрением.

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

Также рекомендую пройтись по коду, если вы или ваши разработчики писали обработчики вручную. Часто в старых проектах можно встретить конструкции вроде:


<?php
// старый синтаксис
if (!$someVar) :
    echo 'Что-то пошло не так';
endif;
?>

или использование устаревших глобальных переменных:


$login = $GLOBALS["USER_LOGIN"];

Их стоит заменить на современные аналоги.

Не уверены, как поведёт себя сайт на PHP 8?
Проведу тестовый переход на копии проекта, покажу, где возникают ошибки и что исправить перед основным обновлением.

Заказать тестовый переход на PHP 8

Связаться в Telegram или .

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

Шаг 5: Что проверить после смены PHP

Когда вы переключили сайт на PHP 8, не спешите радоваться — теперь важно убедиться, что всё действительно работает корректно. Даже если сайт внешне отображается, это не значит, что внутри всё гладко. Некоторые ошибки могут быть неочевидны и проявятся позже: при оформлении заказа, отправке формы или в админке.

Вот что я рекомендую проверить сразу после смены версии PHP:

  1. Зайдите на сайт как обычный пользователь и проверьте все ключевые разделы: каталог, карточки товаров, формы обратной связи, корзину, поиск, фильтры и оформление заказа;
  2. Авторизуйтесь в админке и откройте хотя бы 3–4 раздела: список заказов, элементы в инфоблоке, формы редактирования, отчёты и модули;
  3. Посмотрите журнал ошибок (/bitrix/php_interface/error.log, если включено логирование) — возможно, уже есть предупреждения или notice, которые нужно устранить;
  4. Убедитесь, что работают агенты и задания по крону — особенно, если в проекте есть регулярный импорт/экспорт, синхронизация с 1С или рассылки;
  5. Откройте консоль разработчика в браузере (F12 → вкладка Console) и проверьте, нет ли ошибок JavaScript, связанных с изменёнными форматами данных;
  6. Если используется API внешних сервисов (например, платёжных систем, CRM, доставки) — протестируйте хотя бы один реальный сценарий интеграции.

Если видите "белый экран" или 500-ошибку — первым делом включите отображение ошибок и журналирование, это поможет понять, где именно падает код. Вернуть обратно на PHP 7.4 можно в любой момент, но цель — именно выявить слабые места и адаптировать их.

Шаг 6: Скрипт логирования ошибок на хостинге

Бывает, что после перехода на PHP 8 ошибки «молча» происходят — без экрана, без вывода, и даже error_reporting не помогает. Чтобы убедиться, что логирование действительно работает, лучше проверить это вручную.

Я подготовил безопасный скрипт, который специально вызывает warning — не фатальную ошибку, а именно предупреждение. После запуска такого скрипта вы сможете проверить: появилась ли соответствующая запись в error.log вашего хостинга. Если да — лог работает, можно не переживать.

Этот шаг особенно важен при работе с shared-хостингами, где вы не всегда можете влиять на php.ini или просматривать системные логи напрямую.


<?php
ini_set('display_errors', 0); // Не выводить на экран
ini_set('log_errors', 1);
ini_set('error_log', $_SERVER['DOCUMENT_ROOT'] . '/bitrix/php_interface/error.log');
error_reporting(E_ALL);

// Пример тихой ошибки (warning)
$data = null;
$count = count($data);

echo 'Тестовая ошибка записана в error.log';
Файл для скачивания:
php_error_log_test_safe.zip — скрипт для проверки логирования ошибок на хостинге.

Загрузите файл в корень сайта или в отдельную директорию, затем откройте в браузере. В логах должна появиться строка об ошибке count(): Parameter must be an array or an object that implements Countable. Это значит — всё работает корректно, и ваш сервер будет уведомлять об ошибках после перехода.

Шаг 7: Как отлавливать и устранять ошибки

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

Вот как можно действовать:

  • Включите отображение ошибок в .settings.php или через ini_set() — но только временно, не на боевом сайте;
  • Обязательно активируйте логирование в php.ini или через ini_set('log_errors', 1); — ошибки должны писаться в error.log;
  • Проверяйте логи сервера после каждой настройки или обновления модуля;
  • Тестируйте функционал вручную: формы, корзины, фильтры, админку — всё, что может быть чувствительно к типам данных;
  • Используйте сканеры кода (например, PHPStan или Phan) — они подскажут, где возможны проблемы ещё до запуска;
  • Проверьте кастомные компоненты и модули, особенно если они писались до 2020 года.

Инструменты для анализа кода перед переходом:

PHPStan — помогает выявить потенциальные ошибки до запуска сайта.

Phan — продвинутый анализатор для отслеживания несовместимостей при переходе на новую версию PHP.

Если в коде много устаревших конструкций — например, передачу аргументов без типов или ожидание, что count() может работать с null, — это всё надо привести к актуальным требованиям PHP 8.

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

Включение режима отладки в .settings.php в 1С-Битрикс
Включение режима отладки в .settings.php в 1С-Битрикс: параметр 'debug' => true активирует вывод ошибок и предупреждений.

Типовые ошибки после перехода: count(), static, implode

После перехода на PHP 8.x в проектах на 1С-Битрикс часто всплывают ошибки, которые раньше замалчивались. Ниже — три частых сценария, с которыми сталкиваются разработчики после апгрейда.

1. count(): Argument #1 must be of type Countable

Это критичная ошибка, если вы вызываете count() на переменной, которая может быть null или false. В PHP 7.4 это просто выводило warning, но в PHP 8 — уже fatal error.

// Пример ошибки:
$count = count($arResult['ITEMS']);
// Защита:
$count = is_countable($arResult['ITEMS'] ?? null) ? count($arResult['ITEMS']) : 0;

2. Non-static method SomeClass::methodName() cannot be called statically

Ошибка возникает, если вы вызываете метод как статический (SomeClass::methodName()), но он не помечен как static в описании класса.

// Ошибочный вызов:
SomeClass::getList(); // а метод getList() — обычный, нестатический
// Решения:
// либо добавить static в объявление метода
public static function getList()

// либо вызывать через объект
$obj = new SomeClass();
$obj->getList();

Bitrix-разработчики часто сталкиваются с этим при использовании старого кода, особенно в самописных модулях или обработчиках.

3. implode(): Passing glue after array is deprecated

Если аргументы в implode() идут в старом порядке, PHP 8 выдаёт предупреждение. До обновления многие разработчики не обращали на это внимания.

// Устаревший вызов:
implode($array, ', ');

// Современный и безопасный:
implode(', ', $array);
Совет: используйте статический анализатор PHPStan или Phan — они найдут большинство таких ошибок ещё до запуска сайта.

Подводные камни и нестандартные случаи

Даже если сам сайт работает, могут «вылезти» нестандартные нюансы, особенно если в проекте были доработки, сторонние модули или вмешательства в ядро CMS. Разберём два наиболее частых случая:

Что делать, если есть кастом или доработки ядра

Если вы вносили правки напрямую в файлы ядра Bitrix (даже «аккуратно») — при обновлении PHP это может аукнуться. Новая версия интерпретатора строже относится к синтаксису и типам данных, что приводит к ошибкам даже при незначительных отклонениях от стандарта.

Как проверить:

  • Сравните текущие файлы ядра с «чистой» копией Bitrix той же версии;
  • Посмотрите структуру каталогов — если правки лежат в /bitrix/modules или /bitrix/php_interface, это тревожный звоночек;
  • В логах могут появляться ошибки с указанием на нестандартный путь или вызов функции, не входящей в стандартный набор.
Совет: выносите кастом в /local — это не только безопаснее, но и проще в поддержке при переходах на новые версии CMS или PHP.

Как быть со старыми модулями

Если на сайте используются старые модули из маркетплейса или сторонние решения, которые давно не обновлялись — они могут конфликтовать с новой версией PHP. Особенно это касается:

  • Функций без строгой типизации (или с нарушением типов);
  • Обращений к устаревшим методам классов;
  • Использования устаревших функций (each(), create_function() и пр.);
  • Некорректной работы с массивами или строками (часто ошибки в implode, count и т.д.);
  • Нарушений статической модели классов (например, вызов нестатического метода как статического).
class Tools {
    public function log($text) {
        file_put_contents('log.txt', $text);
    }
}

// Ошибочный вызов:
Tools::log("Сообщение"); // Fatal error: Uncaught Error: Non-static method Tools::log() cannot be called statically
Пример: если вы вызываете нестатический метод как статический — PHP 8+ выбросит ошибку. Такие места стоит отловить заранее, особенно если код писался давно.

Решение — или обновить модуль, или временно отключить, или заменить функциональность собственным кодом. Если модуль критичен, но устарел — свяжитесь с разработчиком на предмет актуальной версии.

// Правильный способ:
$tools = new Tools();
$tools->log("Сообщение");
Решение: создавайте экземпляр класса перед вызовом метода, если он не объявлен как static. Или пометьте метод как public static, если он не зависит от состояния объекта.
class Tools {
    public static function log($text) {
        file_put_contents('log.txt', $text);
    }
}

// Теперь можно так:
Tools::log("Сообщение");
Если метод не зависит от состояния объекта — объявите его static. Это особенно удобно для вспомогательных функций (логирование, форматирование и т.д.).

Чеклист безопасного перехода

Чтобы не словить белый экран и не терять клиентов, рекомендую пройтись по следующему чеклисту перед переключением версии PHP на хостинге. Это минимальный набор действий, который спасёт в 95% случаев:

Что сделать Пояснение
Проверить поддержку PHP 8 в используемой версии ядра Битрикс Битрикс поддерживает PHP 8.0 начиная с версии 21.300. Все обновления должны быть установлены заранее.
Обновить все модули из Marketplace Особенно важны модули оплаты, доставки, интеграции с CRM. Устаревшие версии могут вызвать фатальные ошибки.
Проверить и переписать кастомные функции Исключить использование устаревших конструкций, проверить вызовы count(), работу с массивами и строками.
Добавить public static function к методам без состояния Если метод не зависит от экземпляра класса — явно укажите static, чтобы избежать ошибок вызова и повысить читаемость кода.
Настроить логирование ошибок Включите вывод в error.log, чтобы сразу видеть причину проблем. Мы уже разобрали это выше.
Создать резервную копию проекта И базы данных, и файлов. Если что-то пойдёт не так — сможете откатиться за пару минут.
Проверить корректность cron-скриптов Особенно если агенты запускаются через отдельный PHP-движок. Убедитесь, что используется актуальный /usr/bin/php.
Тестировать сайт в закрытом режиме Если возможно — используйте дублирующий домен или staging. И только после проверки переходите на боевом сайте.
Если вы прошли по всему чеклисту — шансы на успешный переход без сбоев у вас высокие. А значит, можно двигаться дальше.

Что делать, если что-то пошло не так

Если после перехода на PHP 8 сайт перестал открываться, не паникуйте. Вот пошаговая инструкция, что делать:

  1. Откройте error.log на хостинге — он покажет конкретную причину сбоя;
  2. Если ошибка связана с модулем — проверьте, есть ли его обновления в Marketplace и обновите через административную панель;
  3. Если это ваша доработка — попробуйте временно закомментировать строку в файле, указанном в логе, и перезапустить страницу;
  4. Если доступа к админке нет — через FTP откатитесь на PHP 7.4 (если хостинг ещё поддерживает её), и верните предыдущие файлы/бэкап;
  5. Обратитесь к разработчику, если лог показывает ошибку, которую сложно устранить самостоятельно.
Частая ошибка — белый экран без логов. Это значит, что display_errors отключён, и error_reporting не настроен. Включите их в .user.ini или настройках хостинга.
Даже если всё сломалось — не трогайте ядро или базу данных руками. Спокойно найдите причину через логи и действуйте по ситуации.

Ответы на популярные вопросы

Что будет, если не перейти на PHP 8?

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

Можно ли перейти на PHP 8 без помощи разработчика?

Если сайт не содержит нестандартных модулей и кастомных доработок, вы можете попробовать сами. Но важно понимать: даже небольшая ошибка в коде может привести к сбоям. Лучше проконсультироваться перед переходом.

Нужно ли перед переходом обновлять сам Битрикс?

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

Можно ли сделать переход поэтапно?

Частично — да. Вы можете сначала включить PHP 8 на тестовом поддомене, а уже потом на основном сайте. Это безопасный способ проверить всё без риска.

Нужно ли сразу переходить на VPS или выделенный сервер?

Не обязательно. Если сайт не перегружен функционалом и посещаемость умеренная — качественный shared-хостинг вполне справится. Но при росте нагрузки лучше переходить на VPS с оптимизацией под Bitrix.

Сильно ли ускорится сайт на PHP 8?

В среднем производительность повышается на 10–25%, особенно при использовании кэширования и правильных настроек. Но важно понимать, что скорость зависит и от кода сайта, и от сервера.

Повлияет ли обновление PHP на безопасность сайта?

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

Полезные ссылки и файлы

Заключение

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

Но важно не просто обновиться, а сделать это безболезненно: с проверками, резервными копиями, исправлением ошибок и аккуратной настройкой окружения. Я прошёл этот путь не раз — и для сайтов с готовыми решениями, и для сложных проектов с доработанным ядром.

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

Безопасно перейти на PHP 8

Связаться в Telegram или .

Работаю по чеклисту «Было → Сделал → Стало». Всё прозрачно и по шагам.

Похожие статьи
Ошибка базы данных MySQL в 1С-Битрикс — как восстановить сайт за 10–30 минут
Сайт на 1С-Битрикс сильно тормозит: причины, диагностика и ускорение за 1 день
1С-Битрикс не отправляет письма с сайта — как вернуть отправку заявок за 10 минут
Сайт на 1С-Битрикс взломали — что делать прямо сейчас
Сайт на Битриксе не открывается: причины и решение за 10 минут
Как установить 1С-Битрикс на хостинг за 5 минут — пошаговая инструкция
Технический аудит сайта на 1С-Битрикс — подробный разбор и моя методика
Как выбрать хостинг для 1С‑Битрикс: инструкция, нюансы и мой топ‑провайдеров
Как обновить 1С-Битрикс до последней версии без ошибок
Мой способ переноса сайта на другой хостинг в 1С-Битрикс — без потерь и за 10 минут
Предыдущая статья Мой способ переноса сайта на другой хостинг в 1С-Битрикс — без потерь и за 10 минут Следующая статья Ускоряем 1С-Битрикс: инструкция для разработчиков и владельцев
Твой голос имеет значение Назад
(Голосов: 1, Рейтинг: 5)
Назад Назад к списку статей

Комментарии (0)