Переход на PHP 8.5 в 2026 году — это уже не «потом когда-нибудь», а нормальная рабочая задача для любого сайта, который живёт на Bitrix, WordPress или Laravel. Я на своей практике видел слишком много проектов, где люди тянули до последнего, а потом ловили белый экран, сломанные формы, ошибки в админке и просадку по скорости. И да, если делать всё в лоб, это плохая идея.
Я обычно подхожу к обновлению PHP как к маленькой миграции: сначала проверка совместимости, потом staging, потом короткое окно на боевом сервере, потом контроль логов и откатный план. Грубо говоря, здесь выигрывает не самый смелый, а самый аккуратный. Если сайт для бизнеса важен, без нормальной доработки сайта под новую версию PHP лучше не лезть. А если у вас уже всплывали ошибки после обновлений, имеет смысл сразу смотреть проверку сайта до и после релиза.
Почему PHP 8.5 в 2026 году — это логичный шаг
PHP 8.5 в 2026 году обычно рассматривают не просто как «новую версию», а как часть технического обновления всей платформы. На деле разница между PHP 8.1, 8.2, 8.3 и свежими ветками заметна не только в синтаксисе, но и в реальной стабильности, скорости выполнения и безопасности. У меня был клиент на Bitrix, у которого сайт жил на PHP 8.1 и MariaDB 10.3. После перехода сначала на 8.3, а затем на 8.5 в тестовом контуре, среднее время генерации страниц упало примерно с 210–240 мс до 150–170 мс. Не космос, но для интернет-магазина с 30–40 тыс. товаров это уже ощутимо.
Честно говоря, если сайт сидит на старой версии, например 7.4 или даже 8.0, то вы уже не экономите, а копите проблемы. Плагины начинают требовать более свежие зависимости, хостинг-панели обновляются, а разработчики CMS перестают тестировать старые ветки. Я бы особенно внимательно смотрел на проекты на WordPress с тяжелыми конструкторами, на Bitrix с нестандартными модулями и на Laravel-проекты, где много сторонних пакетов через Composer.
И ещё момент. Новая версия PHP — это не только производительность. Это часто ещё и более предсказуемая работа под нагрузкой, меньше странных edge-case багов, лучше типизация и меньше шансов поймать несовместимость с современными библиотеками. Но переход должен быть не «на авось», а через подготовку. Если у вас уже есть технический долг, я бы сначала почитал материал про технический долг сайта и только потом планировал обновление.
С чего начинать: проверка совместимости до обновления
Первый шаг — не ставить новую версию PHP, а понять, что именно на ней сломается. Я обычно смотрю три слоя: CMS, плагины/модули и кастомный код. Для WordPress это тема, плагины, mu-plugins, самописные хуки и автозагрузка Composer. Для Bitrix — ядро, модули, локальные компоненты, агенты и старые шаблоны. Для Laravel — версия фреймворка, пакеты, очереди, cron, event listeners и конфиги.
На практике самые неприятные проблемы прилетают не от CMS как таковой, а от старых библиотек. Например, в одном проекте на WordPress проблема была вообще не в теме, а в плагине для импорта товаров, который использовал устаревшие функции и косвенно завязался на поведение PHP 8.1. На 8.5 он не падал сразу, но начал сыпать предупреждения и тормозить крон. Это классика. Поэтому я всегда прогоняю проект через тестирование совместимости, а если сайт сложный — подключаю ручной аудит кода.
Если хочется подходить системно, я бы рекомендовал перед обновлением сделать аудит скорости и ошибок. Иногда переход на новую версию PHP подсвечивает старые проблемы, которые и так вредили проекту. Тут очень кстати материал про аудит интернет-магазина на скорость и конверсию в 2026 и про Sentry для сайта: после обновления вы сразу увидите, где именно посыпались notice, warning и fatal error.
Плюс обязательно смотрю версию MySQL. Для PHP 8.5 я бы уже спокойно ориентировался на MySQL 8.0 или хотя бы хорошо настроенную 5.7, если проект старый и пока не мигрировал. Особенно если у сайта активная работа с JSON-полями, сложными выборками и очередями. И да, не забывайте про лимиты памяти. Материал про настройку лимитов памяти PHP и MySQL очень пригодится, если проект грузит каталог, фильтры и импорт.
Staging-среда и бэкап: без этого нельзя
Я всегда говорю клиентам одно и то же: обновление PHP без staging — это как ремонтировать двигатель на ходу. Сначала делаете отдельную копию сайта на поддомене или локальном стенде, потом повторяете там всю процедуру. И только если там всё работает, переносите на прод. В 2026 году нормой считаю staging с идентичной версией PHP, таким же расширениям, тем же настройкам OPcache и похожей конфигурацией nginx или Apache.
Бэкап должен быть не «ну у нас вроде есть», а проверяемым. Я видел случаи, когда резервная копия физически существовала, но восстанавливать было нечего: база битая, архив не распаковывался, часть файлов не попала в дамп. Поэтому перед обновлением я делаю минимум два типа копий: файловую и SQL-дамп базы. Если проект важный, ещё и offsite-копию. Хороший ориентир — бэкапы сайта: как делать правильно и не терять данные и облачный бэкап и offsite-копии сайта.
У одного клиента на Bitrix после перехода с PHP 8.2 на 8.3 сломался модуль доставки, который подтягивал старую библиотеку. Хорошо, что staging был настроен нормально: мы нашли ошибку за 20 минут, а не после падения продаж. На боевом сервере это обошлось бы гораздо дороже. Поэтому я даже для небольшого сайта на WordPress советую держать staging, особенно если установлены WooCommerce, WPML, Elementor, ACF Pro и ещё штук пять плагинов.
Пошаговый переход на PHP 8.5 без сюрпризов
Я обычно делаю обновление в такой последовательности. Сначала обновляю проектную документацию: где лежит код, какие cron-задания есть, какие интеграции внешние, какие модули завязаны на PHP. Потом снимаю текущую картину: ошибки в логах, нагрузка CPU, потребление RAM, медленные запросы. Потом включаю staging, дублирую окружение и запускаю всё на новой версии PHP.
Если вы на WordPress, проверьте тему и плагины. Часто падают старые форки плагинов кэширования, нестабильные формы, интеграции с CRM и плагины безопасности. Если у вас Bitrix, обязательно смотрите кастомные компоненты, старые шаблоны и интеграции с 1C. Для Laravel я обычно первым делом проверяю composer.json, версии пакетов и очереди Redis. Кстати, если сайт уже использует кеширование, материал про настройку OPcache для сайта и Redis для сайта можно взять как отдельный чек-лист.
Дальше я обновляю PHP сначала на staging, а потом запускаю smoke-test: главная, каталог, карточка товара, форма заявки, авторизация, поиск, корзина, личный кабинет, админка, крон, REST/API. Да, именно всё это. Смешно, но чаще всего ломается не главная страница, а одна кнопка в глубине воронки, которую никто не проверял годами.
И ещё я всегда оставляю откатный сценарий. Если это VPS или выделенный сервер, переключение версии делаю через панели, альтернативный PHP-FPM pool или через пакетный менеджер. Если это хостинг, где переключение версий делается в панели, заранее проверяю, как быстро можно вернуть 8.4 или 8.3 назад. Без этого вообще не начинайте.
# Пример для Debian/Ubuntu с PHP-FPM
sudo apt update
sudo apt install php8.5-fpm php8.5-cli php8.5-mysql php8.5-curl php8.5-xml php8.5-mbstring php8.5-zip php8.5-gd
sudo systemctl enable php8.5-fpm
sudo systemctl restart php8.5-fpm
# Проверка версии
php -v
sudo systemctl status php8.5-fpm
Настройка nginx и .htaccess под новый PHP
Если сайт крутится на nginx, важно не просто переключить версию PHP, а проверить upstream, сокет и таймауты. На деле половина проблем после обновления — это не сам PHP, а то, что nginx продолжает смотреть на старый сокет или FPM pool, который вы уже отключили. У меня был случай, когда после перехода на PHP 8.5 сайт отдавал 502 Bad Gateway ровно потому, что в конфиге nginx осталась ссылка на /run/php/php8.3-fpm.sock. Сайт был «живой», но через старый сокет, а потом весь отвалился.
Пример nginx-конфига обычно выглядит так:
server {
listen 443 ssl http2;
server_name example.ru www.example.ru;
root /var/www/example.ru/public;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.5-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.(?!well-known).* {
deny all;
}
}
Если у вас Apache и старый .htaccess, сам PHP обычно выбирается не там, а в панели хостинга или через PHP-FPM. Но я всё равно проверяю файл на предмет странных директив, которые могли остаться от прошлого периода: старые правила кеширования, нестандартные редиректы, лишние rewrite-циклы. Это особенно критично после переезда, когда одновременно меняли PHP, SSL и URL-структуру. Тут полезно посмотреть статьи про 301 и 302 редиректы без петель и переадресацию с HTTP на HTTPS и WWW.
Если на сервере есть CSP, HSTS, WAF или reverse proxy, обновление PHP лучше проводить вместе с базовой проверкой заголовков. Иногда после апдейта всплывает не сам PHP-ошибка, а блокировка внешнего API, webhook или формы. В таких случаях очень выручает Content Security Policy и настройка заголовков безопасности HTTP.
Что проверить в коде PHP и в Composer-зависимостях
После обновления PHP больше всего страдает не «чистый» код, а наследие прошлых лет. Я обычно ищу старые функции, deprecated-методы, неявные преобразования типов и места, где код писал один разработчик в 2019 году «временно», а потом это временно живёт до 2026. Особенно осторожно нужно смотреть на each(), старые preg_replace с /e, динамические свойства объектов, неинициализированные переменные и кривые касты.
Если проект на Laravel, обязательно прогоните composer update в тестовом окружении и посмотрите, не тянутся ли пакеты, которые явно не дружат с PHP 8.5. Для WordPress я часто вижу плагины, которые используют устаревшие хуки и старые версии Guzzle, Monolog или Carbon. Для Bitrix больнее всего бьют интеграции с внешними сервисами, старые SOAP-клиенты и самописные модули с копипастой из 2018 года. На практике иногда проще и дешевле заказать настройку силами специалиста, чем потом по ночам ловить fatal error на проде.
Вот короткий пример того, что я обычно проверяю в коде вручную:
<?php
// Плохая идея: не проверять типы и полагаться на "авось"
function formatPrice($price) {
return number_format($price, 2, ',', ' ');
}
// Лучше так:
function formatPrice(int|float $price): string {
return number_format($price, 2, ',', ' ');
}
И ещё. Если у вас есть SQL-запросы, не тяните в 2026 году запросы с ручной склейкой строк. Это не только про безопасность, но и про стабильность при переносе между версиями PHP и библиотекой драйвера. Если тема безопасности актуальна, у меня на сайте есть отдельный материал про защиту сайта от SQL-инъекций, и его очень советую перечитать перед обновлением.
Тестирование после обновления и работа с логами
После переключения на PHP 8.5 нельзя просто выдохнуть и уйти пить кофе. Я обычно держу проект под наблюдением хотя бы 24–72 часа. Смотрю error log, slow log, логи nginx, логи приложения, метрики FPM и нагрузку на базу. Если сайт в 2026 году живёт на серьёзном трафике, у вас должны быть настроены уведомления о сбоях, а лучше ещё и uptime-мониторинг. Тут отлично заходят статьи про Sentry и uptime-мониторинг сайта.
Я обычно тестирую не только руками, но и автоматикой. Это особенно удобно на проектах, где есть CI/CD или хотя бы простые smoke-тесты после деплоя. Если у вас ничего не автоматизировано, обновление PHP — отличный повод начать. В блоге есть хорошая база по теме: автоматическое тестирование сайта и версионирование и откат обновлений.
Из конкретики я смотрю на такие вещи:
- нет ли 500 ошибок на важных страницах;
- не выросло ли время ответа выше 300–400 мс на типовых страницах;
- не пошли ли warning и deprecated в логах;
- не сломались ли формы, поиск, личный кабинет, корзина и API;
- не появилась ли просадка по PageSpeed из-за ошибок серверной части.
На одном проекте WordPress после обновления PHP с 8.2 на 8.5 PageSpeed Insights сначала даже подрос по LCP, но потом выяснилось, что часть страниц стала дольше рендериться из-за кривого плагина кеша. То есть цифра в отчёте не всегда говорит правду целиком. Поэтому я всегда сравниваю и frontend, и backend. Кстати, если скорость для вас критична, загляните в Google PageSpeed Insights 2026 и Core Web Vitals.
Ошибки, которые встречаются чаще всего
Самая частая ошибка — обновили PHP на проде, а потом начали разбираться, что именно сломалось. Так делать не надо. Вторая по популярности проблема — забыли про старые расширения. Например, проекту нужен intl, mbstring, curl, gd, xml, zip, а на новом PHP часть модулей не доустановили. В итоге сайт формально запускается, но половина функций не работает.
Третья проблема — несостыковка между PHP и серверной инфраструктурой. Например, nginx уже переключили, а PHP-FPM pool не перезапустили. Или в Bitrix остался старый кеш, который надо было чистить после деплоя. Или в WordPress плагин кеширования держит старый compiled state. В таких случаях я обычно сначала очищаю кэш, проверяю права на файлы, затем смотрю логи. И только после этого иду в код.
Четвёртая история — внешние интеграции. CRM, платёжки, API доставки, почта, webhook-и в Telegram. После обновления PHP они могут начать вести себя чуть иначе, и это не всегда видно сразу. Если у сайта много интеграций, сначала проверьте их на staging. Заодно можно посмотреть интеграцию CRM с сайтом и веб-хуки на сайте.
Когда лучше не делать это самому
Если сайт небольшой, без сложных интеграций, с чистой темой и актуальными плагинами, переход на PHP 8.5 часто можно сделать и своими силами. Но если это интернет-магазин, корпоративный портал, проект на кастомной логике или старая Bitrix-установка с историей в 7–10 лет, я бы не экспериментировал. Там один неаккуратный шаг может стоить дороже, чем нормальная работа специалиста.
На деле я часто вижу один и тот же сценарий: заказчик пытается обновить PHP сам, потом пару дней чинит фронт, ещё два дня ловит кривой кеш, а потом всё равно обращается за помощью. Поэтому иногда выгоднее сразу заказать доработку сайта или хотя бы точечную поддержку Bitrix / поддержку WordPress. Да, это расход, но он обычно меньше, чем потеря заявок и времени команды.
Если вы не понимаете, насколько сложен ваш проект, я бы начал с технической диагностики и оценки бюджета. Для этого уместно использовать калькулятор стоимости сайта, а затем уже планировать работы. Если всплывают ошибки, можно сразу делать не только обновление PHP, но и полноценную диагностику через проверку сайта и последующую безопасную доработку.
И ещё момент. Хороший подрядчик не просто переключит версию, а соберёт весь маршрут: бэкап, staging, тесты, мониторинг, откат, фиксы. Вот это и есть нормальный подход. Всё остальное — самодеятельность.
Готов ли ваш сайт к переходу на PHP 8.5?
Проведём аудит кода и поможем безопасно обновить сайт до PHP 8.5 без простоев и ошибок.
