Хостинг, серверы и лицензии

Обновление PHP до последней версии: Ubuntu, VPS и хостинг

Аркадий ЗверевАркадий Зверев, генеральный директор «Кометы»··15 мин чтения

Обновление PHP до последней версии помогает ускорить сайт, сохранить совместимость с CMS и подготовить сервер к работе с актуальными модулями, фреймворками и панелями управления. В статье разобраны Ubuntu, VPS, хостинг, PPA Ondřej, Nginx, Composer, cPanel, ISPmanager и Plesk.

Коротко о главном

Ключевые выводы

  • Обновление PHP лучше начинать с резервной копии сайта, базы данных и настроек сервера.
  • Для Ubuntu удобный путь к последней версии PHP дает PPA Ondřej, если хостинг или VPS разрешает такую установку.
  • PHP взаимодействует с веб-сервером и Nginx, поэтому после смены версии важно переключить обработчик.
  • Актуальный ориентир для большинства сайтов, модулей и CMS — PHP 8.3 или PHP 8.4.
  • Проверить результат можно через php -v в консоли и phpinfo() на тестовой странице.

Зачем обновлять PHP и как определить, что пора это сделать

Переход с PHP 7.4 на PHP 8.x в отдельных CMS и фреймворках дает прирост производительности до десятков процентов, особенно на нагруженных проектах. Поэтому обновление PHP влияет на скорость ответа сайта, совместимость WordPress, Laravel и Symfony, а также на поддержку PHP в Ubuntu, веб-сервере и Nginx.

PHP 5.x и 7.0–7.3 уже относятся к end of life, а значит, для таких версий PHP лучше запланировать php update до последней версии PHP. Первый шаг, который помогает принять решение, простой: проверить текущую версию PHP на сервере.

Что меняется при переходе на новую версию PHP: производительность, безопасность и поддержка

  • php8 добавляет JIT, который ускоряет вычислительные сценарии и полезен для отдельных типов нагрузки.
  • Named arguments упрощают вызовы функций и делают код CMS, WordPress, Laravel и Symfony понятнее.
  • Union types помогают точнее описывать данные и снижают количество несовместимостей при разработке.
  • Fibers дают основу для асинхронных сценариев и современных библиотек.
  • Match expression делает условия короче и чище, чем длинные цепочки switch.
  • Улучшенная обработка исключений помогает быстрее найти некорректные участки после обновления.
  • Официальный цикл поддержки PHP: 2 года active support и 2 года security fixes для каждой ветки, the PHP manual подтверждает это.

Структура версионирования PHP: как читать номер версии

Номер 8.3.12 читается как major 8, minor 3, patch 12. Patch-обновление обычно мягче, а переход 7.x на 8.x требует проверки совместимости. Последняя версия и история релизов публикуются на php.net/downloads и php.net/releases, the official release archive.

Таблица цикла поддержки PHP-версий: сроки активной поддержки и окончания Security-фиксов

Актуальные даты поддержки PHP стоит сверять с php.net/supported-versions, the supported versions page, перед каждым обновлением.

PHP Version Release Date Active Support Until Security Fixes Until Status
PHP 7.4 28 Nov 2019 Завершена 28 Nov 2022 EOL
PHP 8.0 26 Nov 2020 Завершена 26 Nov 2023 EOL
PHP 8.1 25 Nov 2021 Завершена 31 Dec 2025 EOL
PHP 8.2 08 Dec 2022 31 Dec 2024 31 Dec 2026 Security fixes only
PHP 8.3 23 Nov 2023 31 Dec 2025 31 Dec 2027 Security fixes only
PHP 8.4 21 Nov 2024 31 Dec 2026 31 Dec 2028 Active
PHP 8.5 20 Nov 2025 31 Dec 2027 31 Dec 2029 Active

Как проверить текущую версию PHP на сервере

CLI:

Терминал
php -v
Код
php --version

Web:

PHP
<?php phpinfo(); ?>

CLI может показывать одну version, а веб-контур или Nginx — другую, потому что обработчики работают через отдельные настройки PHP-FPM или mod_php. Поэтому версию PHP на сайте проверяют через phpinfo(), а версию PHP на вашем сервере — через консольную команду.

Подготовка сервера к обновлению PHP: необходимые шаги

Подготовка к обновлению PHP на Ubuntu, VPS или хостинг обычно занимает 15–30 минут. Этот этап сохраняет файлы сайта, MySQL, настройки PHP и серверы в рабочем состоянии после установки новой версии.

Резервное копирование: файлы сайта и база данных

  • Сохранить файлы сайта: tar -czf site-backup.tar.gz /var/www/site или rsync -a /var/www/site /backup/site.
  • Сохранить базу MySQL: mysqldump -u user -p database_name > database-backup.sql.
  • Скопировать настройки PHP: cp /etc/php/*/fpm/php.ini /backup/php.ini и cp -r /etc/php/*/mods-available /backup/php-mods.
  • Сохранить конфиги веб-сервера: cp -r /etc/nginx /backup/nginx или сохраните конфиги используемого веб-сервера.
  • Сделать snapshot VPS, если провайдер дает быстрый откат в данном хостинг-аккаунте.

Проверка совместимости: несовместимый код и расширения

Найти несовместимый код помогает phpcs с PHPCompatibility: composer require --dev phpcompatibility/php-compatibility squizlabs/php_codesniffer. Перед обновлению PHP версии проверьте mysql_*, строгую типизацию, deprecated-функции и другие расширения. Для WordPress, Laravel и Symfony используйте официальные матрицы совместимости CMS и фреймворков.

Обновление PHP на Ubuntu с помощью PPA Ondřej: пошаговая инструкция

В стандартных репозиториях Ubuntu LTS версии PHP будут обновляться осторожно, потому что приоритет системы — стабильность. Если нужна latest php version, the PPA Ondřej позволяет обновить PHP на Ubuntu 22.04 и 24.04 через apt, а для 20.04 стоит учитывать режим расширенной поддержки. Все команды выполняются через sudo, при этом можно держать несколько версий PHP рядом и переносить сайт поэтапно.

Коротко о главном

Процесс обновления PHP:

Текущая версия → Добавление PPA → apt update → apt install → Переключение версии → Перезапуск сервиса → Проверка

Шаг 1 — Добавление репозитория PPA: команда add-apt-repository

Терминал
sudo apt update

APT обновляет индексы пакетов Ubuntu перед добавлением нового ppa.

Терминал
sudo apt install software-properties-common

Эта установка нужна для минимальных сборок Ubuntu, где add-apt-repository отсутствует.

Терминал
sudo add-apt-repository ppa:ondrej/php

Репозиторий ondrej php sudo подключает источник, который предоставляет версии PHP для apt.

Терминал
sudo apt update

Команда обновляет список пакетов после подключения PPA; если появилось сообщение GPG key, проверьте доступность ключа и кодовое имя Ubuntu.

Шаг 2 — Установка новой версии PHP с помощью apt install

Терминал
sudo apt install php8.3 php8.3-cli php8.3-fpm php8.3-mysql php8.3-xml php8.3-curl php8.3-mbstring php8.3-zip

Такой install сразу ставит php8, CLI, FPM и расширения, которые чаще всего нужны CMS. Пакет php8.3 подходит для базового запуска, а php8.3-fpm нужен для Nginx и часто используется с HTTP Server через FastCGI.

Расширения PHP и где они нужны

  • php8.3-mysql — WordPress, Bitrix, Laravel, Symfony, работа с MySQL.
  • php8.3-xml — WordPress, Laravel, Symfony, XML-карты и интеграции.
  • php8.3-curl — API, платежные сервисы, обмен данными.
  • php8.3-mbstring — корректная работа строк, форм, админ-панелей.
  • php8.3-zip — архивы, установка модулей, импорт и экспорт.
  • php8.3-fpm — Nginx, высоконагруженный веб-контур, изоляция процессов.

Шаг 3 — Переключение версии PHP для Apache

Терминал
sudo a2dismod php7.4

Веб-сервер отключает старый модуль PHP, чтобы не обслуживать сайт прежней веткой.

Терминал
sudo a2enmod php8.3

Веб-сервер включает новую версию PHP для веб-запросов.

Терминал
sudo systemctl restart apache2

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

Важно

Если пропустить этот шаг, сайт будет работать со старым обработчиком PHP. Переключение CLI через update-alternatives выполняется отдельно.

Управление версиями PHP через update-alternatives

update-alternatives меняет только CLI-версию PHP, а веб-сервер и Nginx требуют отдельных настроек.

Терминал
sudo update-alternatives --config php

Интерактивный режим позволяет выбрать, какую версию PHP использовать в консоли Ubuntu Linux.

Терминал
sudo update-alternatives --set php /usr/bin/php8.3

Явная команда переключает CLI на php8.3 без меню выбора.

Терминал
php -v

Так проверяют your php version после переключения CLI.

Шаг 4 — Настройка PHP-FPM для Nginx: переключение и активация

Терминал
sudo systemctl disable php7.4-fpm

sudo systemctl enable php8.3-fpm
sudo systemctl start php8.3-fpm

systemctl отключает старый service, включает новый php-fpm и запускает обработчик для Nginx.

nginx
fastcgi_pass unix:/run/php/php8.3-fpm.sock;

Эту строку нужно указать в конфигурации виртуального хоста Nginx, чтобы веб-запросы шли в правильный socket PHP-FPM.

Важно

Если путь к socket указан неверно, Nginx вернет 502 Bad Gateway. Проверьте активные socket-файлы командой:

Терминал
ls /run/php/

Шаг 5 — Перезапуск веб-сервера и применение изменений

Терминал
sudo systemctl restart apache2

sudo systemctl status apache2
Терминал
sudo systemctl restart nginx

sudo systemctl status nginx

restart полностью перезапускает service, а reload мягко применяет часть изменений без разрыва соединений. После обновления PHP надежнее проверить systemctl status, чтобы убедиться, что веб-сервер продолжает работать штатно.

Обновление Composer после смены версии PHP

Код
composer check-platform-reqs

Эта команда первой показывает, подходят ли зависимости Laravel, WordPress-проекта или Symfony под новую версию PHP.

Код
composer --version

composer diagnose

Команды помогают проверить сам Composer и окружение после обновления.

Код
composer install

install сохраняет версии пакетов из composer.lock и подходит для production.

Код
composer update

composer update может изменить версии зависимостей, поэтому его запускают после проверки совместимости и бэкапа.

Для англоязычных инструкций формулировки update php to version и alternative php providing часто относятся к выбору CLI-ветки. В Ubuntu это закрывает update-alternatives, а веб-версиями PHP введите отдельные настройки веб-сервера или Nginx.

Обновление PHP на других серверах и через панели управления хостинга

Для CentOS, AlmaLinux, Rocky Linux, Windows, cPanel, ISPmanager и Plesk принцип один: обновление PHP меняет инструмент, а не логику. Сначала проверьте CMS, затем выберите версию PHP, обновите настройки системы и проверьте сайт.

Обновление PHP на CentOS, AlmaLinux и Rocky Linux

Терминал
sudo dnf install epel-release

Команда подключает EPEL для дополнительных пакетов.

Терминал
sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm

Remi добавляет репозиторий PHP для RHEL-подобных linux серверов.

Терминал
sudo dnf module reset php

Сброс убирает прежний поток PHP перед upgrade.

Терминал
sudo dnf module enable php:remi-8.3

Команда выбирает, какую version PHP использовать.

Терминал
sudo dnf install php

DNF ставит выбранную ветку PHP и базовые пакеты.

Коротко о главном

В RHEL-подобных системах dnf module enable отличается от apt, поэтому администраторам после Ubuntu важно проверить синтаксис перед run.

Обновление PHP на Windows: WAMP, XAMPP и IIS

WAMP

  • Скачайте PHP с windows.php.net.
  • Поместите папку в C:\wamp64\bin\php.
  • Выберите новую версию через tray menu WAMP.

XAMPP

  • Скачайте Thread Safe x64 для XAMPP.
  • Замените содержимое C:\xampp\php.
  • Обновите путь в httpd-xampp.conf.

IIS

  • Для IIS FastCGI используйте Non-Thread Safe.
  • Замените PHP binaries вручную или через доступный установщик.
  • Обновите FastCGI handler.

Важно

Thread Safe и Non-Thread Safe — the ключевой выбор для Windows: XAMPP обычно требует TS, IIS FastCGI — NTS.

Обновление PHP через панели управления: cPanel, ISPmanager и Plesk

cPanel

  • Откройте MultiPHP Manager или EasyApache 4.
  • Выберите домен.
  • Укажите нужную версию PHP и примените изменения.

ISPmanager

  • Откройте PHP Settings.
  • Добавьте нужную версию PHP.
  • Назначьте ее сайту в настройках веб-домена.

Plesk

  • Откройте Websites & Domains.
  • Перейдите в PHP Settings.
  • Выберите версию PHP и обработчик из списка.
Скриншот панели управления хостингом с выбором версии PHP
Скриншот Plesk или cPanel с выпадающим списком выбора PHP. Замените путь изображения на фактический URL после загрузки файла в медиабиблиотеку.

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

Проверка корректности обновления PHP

Проверить обновление PHP нужно сразу после установки: это такой же обязательный этап, как переключение веб-сервера или Nginx на новую версию.

Проверка версии PHP в командной строке и браузере

Терминал
php -v

php --version

Команды показывают CLI version PHP, которую сервер использует при run из консоли.

PHP
<?php phpinfo(); ?>

phpinfo() показывает, какую версию PHP в данном окружении реально обслуживает веб-сервер или Nginx.

Терминал
curl -s http://localhost/phpinfo.php | grep "PHP Version"

Команда подходит для headless-серверов, где проверка идет без браузера.

Важно

Важно: удалите phpinfo.php сразу после проверки, потому что файл раскрывает конфигурацию PHP и сервера.

Тестирование работоспособности сайта после обновления PHP

  • Проверить главную страницу, каталог, карточки услуг, формы и ключевые разделы.
  • Проверить вход в админ-панель CMS, потому что CMS использует PHP для авторизации и модулей.
  • Проверить отправку форм, загрузку файлов, почтовые уведомления и интеграции.
  • Проверить платежные сценарии, CRM-обмен и API, если они есть на сайте.
  • Проверить журнал веб-сервера: /var/log/apache2/error.log.
  • Проверить журнал Nginx: /var/log/nginx/error.log.
  • Проверить PHP error log, указанный в php.ini или в настройках хостинга.
  • Подключить UptimeRobot или Zabbix, чтобы видеть, продолжает ли сайт работать после изменений.
  • Перед production-обновлением выполнить тестирование на staging-среде, если проект является коммерчески важным.

Типичные ошибки при обновлении PHP и способы их устранения

Большинство сбоев после смены PHP можно найти и устранить за 10–15 минут, если идти по диагностике, а не менять настройки вслепую.

Сайт недоступен после смены версии PHP: пошаговая диагностика

  • Проверить веб-сервер или Nginx: systemctl status apache2 или systemctl status nginx. Ожидаемый результат — active running.
  • Найти записи в логах: tail -n 50 /var/log/apache2/error.log или tail -n 50 /var/log/nginx/error.log. Логи покажут, где изменения нарушили обработку запроса.
  • Проверить PHP-FPM: systemctl status php8.3-fpm. Сервис должен работать без failed-статуса.
  • Проверить активную версию: php -v. Если CLI показывает не ту ветку, переключите ее через update-alternatives.
  • Проверить синтаксис конфигурации: apache2ctl configtest или nginx -t. Ожидаемый результат — Syntax OK или test is successful.

Чаще всего сайт не открывается из-за отсутствующих расширений, некорректного php.ini или неверного пути к FPM socket.

Отсутствующие расширения и модули после обновления: поиск и установка

Код
php -m

Команда показывает активные расширения PHP.

Терминал
apt search php8.3-

Так можно найти другие доступные пакеты для новой ветки.

Терминал
sudo apt install php8.3-gd php8.3-intl

APT устанавливает расширения, которые часто нужны WordPress, Laravel, Symfony и другим CMS.

Терминал
sudo systemctl restart apache2

Перезапуск применяет enable-модули и новые пакеты.

Важно

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

Таблица: частые симптомы после обновления PHP

Симптом Вероятная причина Решение
Missing extension Не установлен модуль PHP Найти пакет через apt search php8.3- и установить через sudo apt install
500 error Конфликт php.ini или кода CMS Проверить error.log, отключить спорный модуль, обновить зависимости
Белый экран Fatal error в PHP Включить логирование, проверить php -m, посмотреть PHP error log
502 Bad Gateway Nginx смотрит на старый socket Указать актуальный unix:/run/php/php8.3-fpm.sock
CLI показывает старую ветку Не переключен update-alternatives Выполнить sudo update-alternatives --config php

Если в старой документации встречается unix run php php, сверяйте команду с текущим путем к бинарному файлу PHP и активной веткой сервера.

FAQ: часто задаваемые вопросы об обновлении PHP

Можно ли иметь несколько версий PHP на одном сервере?

Несколько версий PHP могут работать на одном Ubuntu-сервере, если они установлены параллельно через PPA или пакеты хостинга. Для CLI переключение выполняет sudo update-alternatives --config php, а для веб-сервера и Nginx версию PHP нужно назначать отдельно через модуль, PHP-FPM socket или панель управления.

Нужно ли обновлять php.ini после смены версии PHP?

php.ini не переносится автоматически между ветками, поэтому после смены версии нужно проверить память, лимиты загрузки, timezone, error_log и расширения. На Ubuntu конфиги обычно лежат в /etc/php/8.3/. Для веб-сервера, Nginx и CLI могут использоваться разные php.ini, поэтому важно сверить каждый контур.

Как откатиться, если что-то пошло не так?

Откат выполняют через заранее сделанный бэкап, snapshot VPS или повторное переключение на старую ветку. Для веб-сервера можно вернуть модуль командами sudo a2dismod php8.3 и sudo a2enmod php7.4, затем перезапустить сервис. Для Nginx нужно вернуть прежний PHP-FPM socket в конфигурации сайта.

Обновление PHP на shared-хостинге — возможно ли это?

На shared-хостинге обновление PHP обычно доступно через cPanel, Plesk, ISPmanager или личный кабинет провайдера. Выберите домен, откройте настройки PHP и назначьте нужную версию. Если нужной ветки нет, версию php использовать можно только после подключения ее провайдером на стороне сервера.

Нужно ли обновлять composer-зависимости после смены версии PHP?

Сначала нужно выполнить composer check-platform-reqs, чтобы увидеть, подходят ли зависимости под новую ветку PHP. composer install сохраняет версии из composer.lock, а composer update может изменить пакеты. Для Laravel, Symfony и сложных WordPress-проектов обновление Composer-зависимостей лучше проводить после проверки совместимости.

Как часто нужно обновлять PHP?

PHP стоит обновлять планово: patch-версии устанавливать регулярно, minor-версии проверять после выхода стабильной ветки, major-переходы выполнять после тестирования. Рабочий ориентир — использовать поддерживаемые версии PHP, потому что EOL-ветки не получают исправления безопасности и постепенно теряют совместимость с CMS, Composer-пакетами и расширениями.

Обновление PHP ломает WordPress / Laravel?

Обновление PHP само по себе не ломает WordPress или Laravel, но несовместимые плагины, темы, пакеты Composer и старый код могут мешать сайту работать. Для версий php если планируется переход с 7.x на 8.x, сначала проверьте staging-среду, журнал ошибок и матрицу совместимости CMS.

Услуги по теме статьи

Если задачу из статьи удобнее отдать подрядчику — вот что мы делаем по этой теме.

Флагманский продукт

Сайт под продвижение

Сайт с нуля, сразу сделанный под поисковые системы, и месяц продвижения после запуска. Один договор, одна команда, одна цена.

150 000 ₽сайт и первый месяц продвижения

Что входит

  • Разбор ниши и структура по запросам: разделы, посадочные, смета построчно — 2 недели
  • Прототип, дизайн и сборка на 1С-Битрикс или WordPress, до 20 страниц — 2 недели
  • Техподготовка и запуск: мета-теги, скорость, robots и sitemap, Метрика — 1–2 дня
  • Месяц SEO-продвижения после запуска с отчётом по индексации и заявкам

Услуга по теме

Техническая поддержка сайта

14 500 ₽ в месяц, 4 нормо-часа включены, реакция на аварию — 15 минут.

Похожие статьи

Ещё три разбора по близкой теме из блога «Кометы».

Написать в MAX