Обновление 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
- Структура версионирования PHP: как читать номер версии
- Таблица цикла поддержки PHP-версий
- Как проверить текущую версию PHP на сервере
- Подготовка сервера к обновлению PHP
- Обновление PHP на Ubuntu с помощью PPA Ondřej
- Обновление PHP на других серверах и через панели управления хостинга
- Проверка корректности обновления PHP
- Типичные ошибки при обновлении PHP и способы их устранения
- FAQ: часто задаваемые вопросы об обновлении PHP
- Источники
Зачем обновлять 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 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.
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.
- Скачайте Thread Safe x64 для XAMPP.
- Замените содержимое
C:\xampp\php. - Обновите путь в
httpd-xampp.conf.
- Для 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 и примените изменения.
- Откройте PHP Settings.
- Добавьте нужную версию PHP.
- Назначьте ее сайту в настройках веб-домена.
- Откройте Websites & Domains.
- Перейдите в PHP Settings.
- Выберите версию PHP и обработчик из списка.
Версии PHP могут быть ограничены провайдером хостинга. Если нужной ветки нет в панели, запросите установку в поддержке. WordPress и другие CMS часто показывают предупреждение о несовместимой версии PHP прямо в панели управления.
Проверка корректности обновления PHP
Проверить обновление PHP нужно сразу после установки: это такой же обязательный этап, как переключение веб-сервера или Nginx на новую версию.
Проверка версии PHP в командной строке и браузере
php -v
php --version Команды показывают CLI version PHP, которую сервер использует при run из консоли.
<?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 могут работать на одном Ubuntu-сервере, если они установлены параллельно через PPA или пакеты хостинга. Для CLI переключение выполняет sudo update-alternatives --config php, а для веб-сервера и Nginx версию PHP нужно назначать отдельно через модуль, PHP-FPM socket или панель управления.
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 в конфигурации сайта.
На shared-хостинге обновление PHP обычно доступно через cPanel, Plesk, ISPmanager или личный кабинет провайдера. Выберите домен, откройте настройки PHP и назначьте нужную версию. Если нужной ветки нет, версию php использовать можно только после подключения ее провайдером на стороне сервера.
Сначала нужно выполнить composer check-platform-reqs, чтобы увидеть, подходят ли зависимости под новую ветку PHP. composer install сохраняет версии из composer.lock, а composer update может изменить пакеты. Для Laravel, Symfony и сложных WordPress-проектов обновление Composer-зависимостей лучше проводить после проверки совместимости.
PHP стоит обновлять планово: patch-версии устанавливать регулярно, minor-версии проверять после выхода стабильной ветки, major-переходы выполнять после тестирования. Рабочий ориентир — использовать поддерживаемые версии PHP, потому что EOL-ветки не получают исправления безопасности и постепенно теряют совместимость с CMS, Composer-пакетами и расширениями.
Обновление PHP само по себе не ломает WordPress или Laravel, но несовместимые плагины, темы, пакеты Composer и старый код могут мешать сайту работать. Для версий php если планируется переход с 7.x на 8.x, сначала проверьте staging-среду, журнал ошибок и матрицу совместимости CMS.

