Версия PHP для 1С-Битрикс: как обновить без поломок

Коротко

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

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

ЭтапЧто делаетсяГде
Проверкатекущая версия PHP, версия ядра, срок лицензии«Проверка системы», панель хостинга
Резервная копияфайлы и базаштатный бэкап Битрикса или хостинга
Тестовая копияотдельный поддомен или серверхостинг
Обновление ядра и модулейдо версий, совместимых с нужным PHP«Обновление платформы»
Смена PHPна тестовой копии, затем на боевом сайтепанель хостинга или окружение сервера
Проверкакаталог, корзина, обмен с 1С, формы, агентысайт, журналы ошибок

Основная мысль

Версия PHP для 1С-Битрикс — это не отдельная настройка хостинга, а часть обновления всего сайта: новый PHP работает только вместе с актуальным ядром, совместимыми модулями и доработками, переписанными под изменения языка.

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

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

1С-Битрикс и PHP: какие версии поддерживаются

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

Как узнать текущую версию

  1. В административной части откройте «Настройки → Инструменты → Проверка системы» и запустите тестирование. В отчёте будет версия PHP и замечания по его настройкам.
  2. Версию главного модуля смотрите в разделе обновлений платформы или в списке модулей.
  3. В панели хостинга проверьте, какие версии PHP доступны на тарифе.

По SSH версию можно посмотреть командой:

php -v

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

Почему лицензия влияет на PHP

Обновления ядра приходят только при активной лицензии. Если лицензия давно истекла, сайт застрял на старой версии ядра, которая не поддерживает современный PHP. Тогда перед переходом на новый PHP придётся продлить лицензию и обновить платформу. Как это устроено и что будет без продления — в статье о продлении лицензии 1С-Битрикс.

Когда обновлять PHP

  • хостинг объявил об отключении старой версии PHP;
  • система обновлений Битрикса не ставит новые версии модулей из-за требований к PHP;
  • модуль или готовое решение требует более новую версию;
  • сайт работает на версии, которая больше не получает исправлений безопасности;
  • нужна прибавка в скорости: новые версии PHP работают быстрее.

Как обновить PHP в Битрикс без поломок: пошагово

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

Шаг 1. Резервная копия

Сделайте полную копию файлов и базы данных и убедитесь, что её можно восстановить. Штатный бэкап Битрикса, копия средствами хостинга или обе сразу — главное, чтобы копия хранилась не только на том же сервере. Подробнее — в статье о резервном копировании сайта.

Шаг 2. Тестовая копия

Разверните копию сайта на поддомене или отдельном сервере. На ней должна быть та же версия PHP, что сейчас на боевом сайте. Закройте копию от индексации и отключите на ней отправку писем и обмен с 1С, чтобы тестовые заказы не попали в учёт.

Шаг 3. Обновление ядра и модулей

На тестовой копии обновите платформу и модули через «Marketplace → Обновление платформы». Обновляйте последовательно, проверяя сайт после крупных обновлений. Если на сайте есть доработки ядра — правки прямо в файлах /bitrix/ — обновление их затрёт. Как сохранить такие правки, разобрано в статье об обновлении 1С-Битрикс без потери доработок.

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

Шаг 4. Смена PHP на тестовой копии

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

Шаг 5. Проверка и исправления

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

Шаг 6. Перенос на боевой сайт

Когда тестовая копия работает без ошибок:

  1. Сделайте свежую резервную копию боевого сайта.
  2. Перенесите исправленный код с тестовой копии.
  3. Обновите ядро и модули на боевом сайте.
  4. Переключите PHP.
  5. Сбросьте кеш и проверьте ключевые сценарии.

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

Битрикс ошибки PHP: что ломается после обновления

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

Типичные причины ошибок

Что было в кодеЧто происходит на PHP 8Как исправляют
функции create_function, eachфатальная ошибка: функций больше нетанонимные функции, циклы foreach
обращение к символу строки через фигурные скобкиошибка разбора файлаквадратные скобки
count от null или строкиисключение TypeErrorпроверка типа перед подсчётом
необъявленные константы без кавычекошибка вместо предупреждениякавычки или объявление константы
mbstring.func_overload в настройкахпараметр удалён из PHP 8обновлённое ядро без этой зависимости
передача null во встроенные функциипредупреждения об устаревании в PHP 8.1 и новееявные значения по умолчанию
динамические свойства объектовпредупреждения об устаревании в PHP 8.2 и новееобъявление свойств в классе

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

Отдельно о кодировке windows-1251

Старые сайты на Битриксе часто работают в кодировке windows-1251, а исторически сайты в UTF-8 требовали параметра mbstring.func_overload. В PHP 8 этого параметра нет. Перед переходом ядро обновляют до версии, которая работает без него, а старые сайты нередко заодно переводят на UTF-8. Конвертация кодировки — отдельная задача: она затрагивает файлы, базу данных и обмен с 1С, её делают только на тестовой копии.

Где искать проблемный код

Сначала проверяют собственный код сайта:

  • /local/ — шаблоны, компоненты и модули, если доработки сделаны правильно;
  • /bitrix/php_interface/init.php и подключаемые из него файлы;
  • /bitrix/templates/ — шаблоны сайта и компонентов;
  • публичные страницы с PHP-вставками.

Быстро найти устаревшие конструкции можно поиском по коду:

grep -rn "create_function\|each(" local/ bitrix/php_interface/ bitrix/templates/

Это только первичный поиск: полную картину даёт журнал ошибок на тестовой копии и проверка каждого сценария сайта.

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

По умолчанию Битрикс не показывает подробности ошибок посетителям. На тестовой копии режим отладки включают в файле /bitrix/.settings.php, в секции обработки исключений:

'exception_handling' => array(
    'value' => array(
        'debug' => true,
        'log' => array(
            'settings' => array(
                'file' => 'local/logs/php_errors.log',
                'log_size' => 1000000,
            ),
        ),
    ),
    'readonly' => false,
),

Остальные параметры секции оставьте как есть, меняйте только нужные ключи. На боевом сайте debug держат выключенным, а журнал ошибок — включённым и закрытым от доступа из браузера. Если сайт отдаёт ошибку 500 без подробностей, общий порядок диагностики описан в статье об ошибках 500, 502 и 503.

Битрикс и php.ini: какие настройки проверить

После смены версии PHP настройки php.ini часто сбрасываются к значениям хостинга по умолчанию. «Проверка системы» подсвечивает параметры, которые не соответствуют требованиям Битрикса, но несколько из них стоит знать заранее.

Основные параметры

memory_limit = 256M
max_input_vars = 10000
max_execution_time = 60
upload_max_filesize = 64M
post_max_size = 64M
date.timezone = Europe/Moscow
opcache.enable = 1
opcache.revalidate_freq = 0
display_errors = Off

Что они означают:

  • memory_limit — память на выполнение скрипта; при нехватке падают импорт каталога и обмен с 1С;
  • max_input_vars — сколько полей формы принимает PHP; при низком значении не сохраняются настройки модулей и большие формы в админке;
  • max_execution_time — время выполнения скрипта; для пошаговых операций Битрикса обычно хватает стандартного значения, но импорт и обмен могут требовать больше;
  • upload_max_filesize и post_max_size — размер загружаемых файлов и обменных архивов из 1С;
  • date.timezone — часовой пояс; от него зависят даты заказов и работа агентов;
  • opcache — кеширование байт-кода PHP; Битрикс рекомендует проверять изменения файлов при каждом запросе, иначе правки кода применяются с задержкой;
  • display_errors — на боевом сайте выключен, ошибки пишутся в журнал.

Значения выше — рабочий ориентир. Точные требования для вашей версии ядра показывает «Проверка системы».

Где менять php.ini

Зависит от хостинга: в панели управления есть раздел настроек PHP для сайта, на VPS параметры задаются в конфигурации PHP-FPM или в файле php.ini для нужной версии. После изменений на VPS перезапускают PHP-FPM. Если хостинг не даёт менять нужные параметры, это повод сменить тариф — требования разобраны в статье о хостинге для WordPress и 1С-Битрикс.

Сколько работы потребуется: три сценария

Объём работ при переходе на новый PHP определяется не самим PHP, а тем, в каком состоянии сайт. Ниже — три типичные ситуации.

Битрикс обновление PHP на регулярно обновляемом сайте

Лицензия активна, ядро и модули обновлялись в течение последнего года, доработки вынесены в /local/. В такой ситуации переход обычно проходит спокойно: обновить модули до последних версий, проверить на тестовой копии, исправить несколько предупреждений в собственном коде и переключить PHP. Основное время уходит на проверку сценариев, а не на исправления.

Сайт, который не обновлялся несколько лет

Лицензия истекла, ядро старое, часть модулей Маркетплейса снята с поддержки. Здесь последовательность длиннее:

  1. Продлить лицензию и получить доступ к обновлениям.
  2. Обновить ядро на тестовой копии — иногда в несколько этапов, если разрыв в версиях большой.
  3. Найти замену модулям, которые больше не поддерживаются.
  4. Исправить доработки, сделанные прямо в файлах ядра, и перенести их в /local/.
  5. Перейти на новый PHP и пройти полную проверку.

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

Сайт на старом готовом решении

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

Где меняется версия PHP

  • Виртуальный хостинг. В панели управления есть выбор версии PHP для сайта или домена. Иногда версии для веб-сервера и для cron задаются отдельно — это стоит проверить, иначе агенты на cron будут работать на старой версии.
  • VPS со своей настройкой. Устанавливается новая версия PHP-FPM, в конфигурации веб-сервера сайт переключается на неё. Старая версия остаётся установленной до конца проверки.
  • Окружение Битрикса на виртуальной машине. Смена версии PHP выполняется средствами окружения по его документации.

Что проверить после обновления PHP

Главная страница, которая открывается без ошибок, ещё не означает, что всё работает. Ломаются обычно редкие сценарии.

Сценарии для проверки

  1. Каталог: разделы, фильтр, поиск, карточки товаров с торговыми предложениями.
  2. Корзина и оформление заказа: доставка, оплата, письма покупателю и менеджеру.
  3. Личный кабинет: вход, регистрация, история заказов.
  4. Формы: заявки, обратный звонок, подписка.
  5. Обмен с 1С: выгрузка каталога, остатков, цен и заказов.
  6. Агенты и cron: регулярные задачи, рассылки, очистка корзин.
  7. Административная часть: редактирование элементов инфоблоков, настройки модулей.
  8. Интеграции: CRM, платёжные системы, службы доставки.

Журналы

Первые дни после переключения смотрите:

  • журнал ошибок PHP на сервере;
  • журнал исключений Битрикса, если он включён;
  • «Журнал событий» в административной части;
  • ошибки обмена с 1С.

Если ошибка критичная и быстро не исправляется, откат выполняется переключением PHP на прежнюю версию — поэтому старую версию не удаляют с сервера до конца проверки.

Типичные ошибки и на чём опасно экономить

Ошибки при обновлении PHP

  • Смена PHP на боевом сайте без тестовой копии. Любая несовместимость сразу видна покупателям.
  • Смена PHP без обновления ядра. Старое ядро не рассчитано на новую версию.
  • Обновление ядра поверх правок в /bitrix/. Доработки затираются.
  • Проверка только главной страницы. Обмен с 1С и оплата ломаются незаметно.
  • Прыжок через несколько версий PHP сразу без анализа кода. Ошибок больше, найти их сложнее.
  • Отладка включена на боевом сайте. Посетители видят пути к файлам и детали ошибок.

На чём опасно экономить

  1. На тестовой копии — это главная страховка.
  2. На продлении лицензии, если без него нельзя обновить ядро.
  3. На проверке обмена с 1С и оплаты.
  4. На резервной копии перед переключением.

Чек-лист

  • Известны текущая версия PHP и версия ядра
  • Лицензия активна или продлена
  • Сделана резервная копия и проверено восстановление
  • Развёрнута тестовая копия, закрыта от индексации
  • Ядро и модули обновлены на тестовой копии
  • Неподдерживаемые модули заменены
  • PHP переключён на тестовой копии, журналы чистые
  • Проверены каталог, корзина, оплата, формы, обмен с 1С, агенты
  • Параметры php.ini соответствуют «Проверке системы»
  • Боевой сайт обновлён в период низкого трафика
  • Прежняя версия PHP сохранена для отката

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

Какая версия PHP нужна для 1С-Битрикс?

Зависит от версии главного модуля. Актуальные версии ядра требуют PHP 8.x. Точный минимум показывают системные требования 1С-Битрикс и «Проверка системы» на вашем сайте.

Как обновить PHP в Битрикс?

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

Можно ли обновить PHP без обновления Битрикса?

Только если текущая версия ядра уже поддерживает нужную версию PHP. Старое ядро на новом PHP обычно не работает или работает с ошибками.

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

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

Что делать, если лицензия истекла, а хостинг отключает старый PHP?

Продлить лицензию, обновить ядро на тестовой копии и перейти на новый PHP. Если лицензия не продлевается, придётся самостоятельно адаптировать код, что обычно дороже и рискованнее.

Где в Битриксе посмотреть версию PHP?

В разделе «Настройки → Инструменты → Проверка системы». Там же видны параметры PHP, которые не соответствуют требованиям.

Какие настройки php.ini важны для Битрикса?

memory_limit, max_input_vars, размеры загружаемых файлов, date.timezone, параметры opcache и выключенный display_errors на боевом сайте. Полный список проверяет «Проверка системы».

Можно ли вернуть старую версию PHP, если что-то сломалось?

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

Нужно ли обновлять PHP, если сайт и так работает?

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

Сколько стоит обновление PHP на Битриксе?

Зависит от объёма доработок и состояния ядра. Если сайт регулярно обновлялся, это несколько часов работы. Если ядро не обновлялось годами, а кода много, — дольше. Стоимость работ — от 2 000 ₽ в час.

Итог

Версия PHP для 1С-Битрикс определяется версией ядра: новый PHP работает только вместе с обновлённой платформой, совместимыми модулями и исправленными доработками. Поэтому обновление PHP — это небольшой проект: резервная копия, тестовая копия, обновление ядра, проверка кода и журналов, перенос на боевой сайт.

Чаще всего ломается не Битрикс, а код поверх него: шаблоны, init.php, старые модули. Их находят на тестовой копии по журналам ошибок и исправляют до переключения рабочего сайта.

Я как частный разработчик обновляю PHP и ядро на сайтах 1С-Битрикс: разворачиваю тестовую копию, адаптирую доработки и модули, настраиваю php.ini и проверяю обмен с 1С и оплату. Работаю напрямую, без посредников. Оценить задачу можно на странице доработки сайта на 1С-Битрикс.

Что будем искать? Например,Продвижение