
Как обновить PHP на сайте: безопасная пошаговая инструкция
Чтобы обновить PHP, сделайте бэкап, проверьте код на совместимость, протестируйте на копии сайта и переключите версию в панели хостинга или на сервере.
Как обновить PHP и не сломать сайт
Чтобы обновить PHP, сделайте резервную копию файлов и базы данных, проверьте код и плагины на совместимость с новой версией, протестируйте всё на копии сайта и только потом переключите версию в панели хостинга или на сервере.
Версия PHP — одна из тех вещей, о которых вспоминают, когда что-то идёт не так: хостинг присылает уведомление об отключении старой ветки, плагин отказывается работать, а сканер безопасности показывает красный статус. Ниже — понятная инструкция: как определить текущую версию, подготовиться к переходу, выполнить обновление на хостинге или VPS и проверить, что сайт продолжает нормально работать для посетителей, Яндекса и Google.
Зачем вообще обновлять PHP
Главная причина — безопасность. Когда ветка PHP снимается с поддержки, разработчики перестают выпускать для неё исправления уязвимостей. Любая найденная после этого брешь остаётся открытой навсегда, а сайты на устаревших версиях становятся лёгкой целью для автоматических сканеров и ботов. Для интернет-магазина или сайта с формами и личным кабинетом это прямой риск утечки данных клиентов.
Вторая причина — скорость. В PHP 7 и особенно в PHP 8 заметно улучшили производительность: появился JIT-компилятор, оптимизировали работу с памятью и массивами. Реальный прирост зависит от проекта: на одних сайтах это единицы процентов, на других — десятки. В любом случае страницы отдаются быстрее, а это хорошо и для пользователей, и для поведенческих метрик, которые вы смотрите в Яндекс Метрике и Google Analytics.
Третья причина — совместимость. Современные версии WordPress, 1С-Битрикс, Laravel, Symfony и популярных плагинов постепенно повышают минимальные требования. Если вы застряли на PHP 7.4, рано или поздно очередное обновление CMS или модуля просто перестанет устанавливаться. Откладывать переход выгодно только до тех пор, пока он не стал вынужденным и срочным.
Сначала выясните, что у вас сейчас
Прежде чем что-то менять, определите текущую версию PHP. Есть несколько способов. В панели хостинга (ISPmanager, cPanel, Plesk и аналогичных) версия обычно указана в разделе настроек сайта или домена. Если у вас сервер, выполните в терминале команду `php -v`. Учтите: консольная версия и версия, под которой работает веб-сервер, могут отличаться, поэтому надёжнее проверить именно через веб — например, временным файлом с вызовом `phpinfo()`. После проверки такой файл обязательно удалите.
Затем сделайте инвентаризацию. Выпишите, какая у вас CMS и в какой версии, какие плагины, модули и темы установлены, нет ли собственного кода от подрядчиков, какие расширения PHP используются (mysqli, curl, gd, mbstring, intl, zip и другие). Особое внимание уделите плагинам, которые давно не обновлялись: именно они чаще всего ломаются при переходе на PHP 8.
Если у вас магазин, интеграции с 1С, платёжными системами или службами доставки, отдельно уточните у разработчиков этих модулей, поддерживают ли они выбранную версию PHP. Такая проверка занимает час, а экономит дни восстановления.
Пошаговый план обновления PHP
- 01
Определите текущую и целевую версии. Проверьте, какая ветка PHP работает сейчас, и выберите новую — желательно ту, у которой впереди не меньше двух лет поддержки (например, 8.3 или 8.4).
- 02
Сделайте полную резервную копию. Сохраните файлы сайта и дамп базы данных, а также конфигурации веб-сервера и php.ini. Убедитесь, что копию можно развернуть: бэкап, который ни разу не восстанавливали, — это лишь надежда.
- 03
Создайте тестовую копию сайта. Разверните копию на поддомене или в отдельном каталоге, закройте её от индексации в robots.txt и авторизацией, чтобы Яндекс и Google не проиндексировали дубль.
- 04
Проверьте код на совместимость. Запустите PHP_CodeSniffer с набором правил PHPCompatibility, статический анализатор PHPStan или Rector. Они покажут удалённые функции и устаревшие конструкции до того, как сайт начнёт падать.
- 05
Переключите версию на тестовой копии. Обновите зависимости через Composer, включите вывод ошибок и пройдите по ключевым сценариям: главная, каталог, карточка товара, корзина, оформление заказа, формы, личный кабинет, админка.
- 06
Обновите PHP на рабочем сайте. Лучше всего делать это в период наименьшей посещаемости. Переключите версию в панели хостинга или установите новую ветку на сервере и перенаправьте на неё веб-сервер.
- 07
Проверьте сайт и следите за логами. Сразу после переключения просмотрите журнал ошибок, откройте основные страницы и пройдите путь клиента. В течение нескольких дней отслеживайте отчёты Яндекс Вебмастера и Google Search Console на предмет ошибок сервера.
Как переключить версию: хостинг или собственный сервер
На обычном виртуальном хостинге всё проще всего: в панели управления выбираете домен, открываете настройки PHP и указываете новую версию из выпадающего списка. Многие хостинги позволяют задать разные версии для разных сайтов, а переключение вступает в силу сразу. Если нужной версии в списке нет, это повод написать в поддержку или сменить тариф: хостинг, не предлагающий актуальные ветки PHP, сам по себе является риском.
На VPS или выделенном сервере вы устанавливаете новую версию самостоятельно. Для Ubuntu обычно используют репозиторий Ондржея Сури (PPA ondrej/php), для Debian — его собственный репозиторий, для семейства RHEL — репозиторий Remi. Старая и новая версии могут стоять рядом, поэтому откатиться несложно. Пример для Ubuntu с PHP-FPM и Nginx приведён ниже.
# 1. подключаем репозиторий с актуальными версиями PHPsudo apt update sudo apt install software-properties-common sudo add-apt-repository ppa:ondrej/php sudo apt update# 2. ставим новую версию и нужные расширенияsudo apt install php8.3-fpm php8.3-cli php8.3-mysql php8.3-mbstring php8.3-xml php8.3-curl php8.3-zip php8.3-gd# 3. сверяем набор модулей со старой версиейphp7.4 -m > old.txt php8.3 -m > new.txt diff old.txt new.txt# 4. в конфиге сайта меняем сокет на php8.3-fpm.sock# fastcgi_pass unix:/run/php/php8.3-fpm.sock;sudo nginx -t sudo systemctl restart php8.3-fpm sudo systemctl reload nginx
Какой способ обновления выбрать
Способ зависит от того, где живёт сайт и кто отвечает за инфраструктуру. Если у вас типовой сайт на хостинге, достаточно переключателя в панели. Если проект крупнее — с очередями, кроном, несколькими сайтами на одном сервере — потребуется администратор. Для контейнерной инфраструктуры версия меняется в образе, и обновление превращается в сборку и выкатку нового контейнера. Сравнение вариантов — в таблице ниже.
| Способ | Как меняется версия | Кому подходит | Сложность |
|---|---|---|---|
| Панель хостинга | Выбор версии PHP в настройках домена | Лендингам, блогам, небольшим магазинам | Низкая |
| VPS или выделенный сервер | Установка новой ветки из репозитория и смена сокета PHP-FPM | Проектам со своим сервером и root-доступом | Средняя |
| Docker-контейнеры | Смена тега образа (например, php:8.3-fpm) и пересборка | Командам с CI/CD и разработчиками | Выше средней |
| Управляемое обслуживание | Администратор или подрядчик делает всё за вас | Бизнесу без технического специалиста | Минимальная для владельца сайта |
Что чаще всего ломается в коде
Переход с PHP 7.x на 8.x — самый «болезненный», потому что в восьмой ветке разработчики убрали много устаревшего и ужесточили поведение языка. Функции вроде `create_function()` и `each()` удалены полностью. Передача `null` во встроенные строковые функции в версии 8.1 стала выдавать предупреждение об устаревании. А в PHP 8.2 пошли предупреждения о динамических свойствах: когда в классе обращаются к свойству, которое не было объявлено заранее.
Плохая новость: старые шаблоны и плагины, которые не обновлялись годами, содержат много таких конструкций. Хорошая: большинство исправлений механические и хорошо автоматизируются инструментом Rector. Ниже — пять самых частых замен, с которыми приходится сталкиваться.
Как не потерять время на исправлениях
Не пытайтесь править всё вручную по наитию. Запустите анализатор на тестовой копии и получите список файлов с проблемами, отсортированный по серьёзности. Критичные ошибки (удалённые функции, фатальные ошибки типов) исправляйте в первую очередь, предупреждения об устаревании — во вторую. Если какой-то плагин или модуль давно заброшен, ищите замену: латать чужой код без поддержки обычно дороже, чем перейти на актуальный аналог.
Параллельно обновите зависимости через Composer. Часто достаточно выполнить `composer update` и поправить ограничения версий в файле composer.json. Если проект использует фреймворк (Laravel, Symfony, Yii), сначала поднимите его до версии, поддерживающей новый PHP, и только потом меняйте версию на сервере.
Частые ошибки при обновлении PHP
Как делать не стоит
- Менять версию на боевом сайте без бэкапа и тестовой копии
- Перепрыгивать через несколько веток, не проверив код на совместимость
- Забыть установить расширения PHP (mbstring, curl, gd, intl), которые были на старой версии
- Оставить на тестовой копии открытый доступ для поисковых роботов
- Не перенести настройки memory_limit, upload_max_filesize и opcache из старого php.ini
- Обновлять PHP в разгар распродажи или рекламной кампании в Яндекс Директ и Google Ads
Как сделать правильно
- 01
Всегда делать бэкап файлов и базы и проверять, что его можно восстановить
- 02
Тестировать на копии, закрытой от индексации и защищённой паролем
- 03
Сверять списки расширений командой php -m до и после установки
- 04
Переносить пользовательские настройки php.ini на новую версию
- 05
Выбирать тихое время суток и заранее подготовить план отката
- 06
Приостановить платный трафик на момент работ или заранее проверить критичные страницы
После обновления: проверка и SEO
Когда версия переключена, не закрывайте задачу сразу. Пройдите по сайту глазами клиента: откройте главную, разделы каталога, карточки, поиск, формы обратной связи, корзину и оформление заказа. Протестируйте отправку писем и работу платёжных модулей. Просмотрите журнал ошибок PHP и веб-сервера: предупреждения об устаревших функциях не всегда ломают страницу, но показывают, что будет сломано в следующей версии.
Отдельно проверьте индексацию. Яндекс Вебмастер и Google Search Console присылают уведомления о проблемах с доступностью сайта; загляните в отчёты о статусе страниц и ошибках сервера (коды 5xx) в течение нескольких дней после работ. Сравните скорость загрузки до и после обновления, например, через отчёты Яндекс Метрики и PageSpeed Insights. Если ошибок нет, а время ответа сервера снизилось, значит, переход прошёл успешно.
Итоги: обновлять PHP нужно планово, а не в аварийном режиме
- 01
Определите текущую версию и сверьтесь с графиком поддержки
- 02
Сделайте бэкап файлов и базы, проверьте возможность восстановления
- 03
Проверьте код и плагины на совместимость до переключения
- 04
Тестируйте на закрытой от индексации копии сайта
- 05
После запуска следите за логами, Яндекс Вебмастером и Google Search Console
Если у вас до сих пор работает PHP 7.x или 8.0, откладывать переход не стоит: это вопрос безопасности и стабильности сайта. Выберите актуальную ветку 8.3 или 8.4, выделите время на подготовку и пройдите все шаги по порядку. Если нет уверенности или технического специалиста, доверьте обновление тем, кто делает это регулярно, — это дешевле, чем восстанавливать сайт после неудачного эксперимента.
Часто задаваемые вопросы
Самый быстрый способ — открыть панель хостинга и посмотреть раздел «PHP» или «Версия PHP». На сервере выполните команду php -v. Ещё один вариант — создать файл с функцией phpinfo() и открыть его в браузере (после проверки файл нужно удалить). В админке WordPress и 1С-Битрикс версия тоже указана в разделе диагностики.
Технически можно, но безопаснее идти через тестовую копию сайта и заранее проверить код анализатором совместимости. Между 7.4 и 8.x много несовместимых изменений: удалённые функции, строгая типизация, новые предупреждения. Чем старее версия, тем больше правок может понадобиться в шаблоне, плагинах и собственном коде.
Напрямую версия PHP не является фактором ранжирования. Косвенно влияет: на новой версии страницы обычно отдаются быстрее, а если после обновления появятся ошибки 500, поисковики начнут выкидывать страницы из индекса. Поэтому после переключения проверьте сайт в Яндекс Вебмастере и Google Search Console.
Вернуть прежнюю версию PHP в панели хостинга или в конфигурации веб-сервера — это занимает пару минут. Затем изучите журнал ошибок (error.log), найдите причину и исправьте её на тестовой копии. Если вы сделали резервную копию файлов и базы данных, потерять данные невозможно.
Проверяйте статус своей версии минимум раз в год. Каждая ветка PHP получает исправления безопасности около четырёх лет, после чего поддержка прекращается. Планируйте переход на новую ветку за несколько месяцев до окончания поддержки текущей.
Обновим PHP на вашем сайте без простоев и потери данных
Проверим совместимость кода, настроим тестовую копию и безопасно переключим версию на сервере.
Спасибо за заявку!
Мы свяжемся с вами в ближайшее время.
Более 200 сайтов переведены на PHP 8



