Руководство по установке и обновлению PHP 8.5 для Debian и Ubuntu

Полное руководство по установке и обновлению PHP 8.5 в Ubuntu и Debian: подключение репозитория Ondřej, установка PHP-FPM и расширений, миграция конфигурации, удаление старых версий и работа нескольких версий PHP одновременно.

PHP 8.5 — это одно из самых значимых обновлений в линейке PHP 8.x, включающее pipe-синтаксис, новое ядро расширений URI и Lexbor, улучшения производительности и обновления безопасности. Однако в официальных репозиториях Ubuntu и Debian данная версия отсутствует, поэтому для установки и обновления требуется воспользоваться поддерживаемым сообществом репозиторием от Ondřej Surý — де-факто стандартом для современных серверов.

В этом руководстве вы найдёте полный пошаговый процесс установки PHP 8.5, настройки PHP-FPM, добавления расширений, миграции конфигурации и корректного удаления старых версий PHP. Подходит для серверов Ubuntu, Debian и их производных, включая продакшен.

Нарушение обратной совместимости в PHP 8.5

Хотя PHP 8.5 остаётся совместимым с PHP 8.4, есть изменения, способные нарушить работу существующих приложений. PHP 8.5 вносит несколько полезных изменений, но они направлены на обеспечение использования рекомендуемых API и не влияют на работу существующих приложений.

PHP 8.5 не удаляет какие-либо расширения PHP, а также не удаляет функции, константы или классы PHP, поддерживаемые в PHP 8.4 и более поздних версиях.

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

Список используемых PHP пакетов

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

Сохранение вывода php -m

php -m выводит список текущих включённых расширений PHP. Этот список пригодится позже, для проверки того, что те же расширения установлены и в PHP 8.5:

Приведённая ниже сохраняет вывод php -m в файл и отображает его на экране:

php -m | tee php-m-output.txt

Сохранение вывода dpkg -l

dpkg -l выводит список всех пакетов, установленных с помощью dpkg (который использует apt). Следующая команда выводит их все, фильтруя только те пакеты, в названии которых есть php, сохраняет их в файл и выводит на экран:

dpkg -l | grep php | tee dpkg-l-output.txt

Добавление ondrej/php PPA/DPA

Начиная с Ubuntu 24.10, Ubuntu не предоставляет PHP 8.5. Репозиторий пакетов PHP от Ondřej Surý содержит PHP 8.5, а также несколько расширений PECL PHP.

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

Ubuntu PPA
sudo LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php # Нажмите Enter для подтверждения.
sudo apt update
Debian DPA
sudo apt-get update
sudo apt-get -y install lsb-release ca-certificates curl apt-transport-https

# Скачайте и добавьте ключ подписи
sudo curl -sSLo /tmp/debsuryorg-archive-keyring.deb https://packages.sury.org/debsuryorg-archive-keyring.deb
sudo dpkg -i /tmp/debsuryorg-archive-keyring.deb
sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'

sudo apt-get update

Установка новых пакетов PHP 8.5

После добавления репозитория в источники apt установка новых пакетов PHP 8.5 сводится к запуску команды apt install с указанием имени пакета PHP 8.5.

Все пакеты PHP 8.5 имеют префикс php8.5- и могут быть установлены наряду с другими версиями PHP.

Установка PHP CLI

sudo apt install php8.5-cli

Это установит исполняемый файл PHP 8.5 CLI вместе с зависимостями. Чтобы проверить, правильно ли прошла установка, протестируйте её с помощью php -v.

php -v

В результате должна вывестись версия PHP вместе с информацией о поставщике сборки (опционально) и авторских правах.

PHP 8.5.0 (cli) (built: Nov 20 2025 19:17:11) (NTS)
Copyright (c) The PHP Group
Built by Debian
Zend Engine v4.5.0, Copyright (c) Zend Technologies
with Zend OPcache v8.5.0, Copyright (c), by Zend Technologies

Установка расширений PHP

Дополнительные расширения PHP, такие как mbstring, curl, intl, readline, можно установить, установив их пакеты с префиксом php8.5-. Для установки расширения PHP 8.5 mbstring, установите пакет php8.5-mbstring.

При обновлении с более старой версии PHP обратитесь к файлу dpkg-l-output.txt, сохранённому в разделе Сохранение вывода dpkg -l. Убедитесь, что установлены те же пакеты, заменив шаблон phpX.Y-ABC на php8.5-ABC.

Установка наиболее распространённых расширений PHP, охватывающих большинство типичных PHP приложений:

sudo apt install php8.5-common php8.5-{bcmath,bz2,curl,gd,gmp,intl,mbstring,openssl,readline,xml,zip}

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

Установка серверных API и их интеграция

Пользователи, использующие PHP без интеграции с веб-сервером (приложения работающие только в командной строке, или приложения использующие встроенный веб-сервер PHP), могут пропустить этот раздел.

Наиболее распространённым способом интеграции PHP с веб-сервером является интеграция с сервером PHP-FPM. Существуют и другие подходы, такие как модуль Apache mod_php, Swoole и FrankenPHP, не рассматриваемые в этой статье.

Установка PHP-FPM

PHP-FPM — рекомендуемый способ интеграции PHP с веб-серверами, такими как Apache (с mpm_event), Nginx, Angie и Caddy.

Пакет php8.5-fpm устанавливает сервер PHP FPM вместе с модулями systemd для автоматического запуска сервера FPM при запуске сервера.

sudo apt install php8.5-fpm

Для проверки установки и работы сервера php-fpm выполните следующую команду:

sudo systemctl status php8.5-fpm

Если PHP-FPM сервер успешно запущен, на экране должно появиться сообщение, аналогичное приведённому ниже:

● php8.5-fpm.service - The PHP 8.5 FastCGI Process Manager
Loaded: loaded (/usr/lib/systemd/system/php8.5-fpm.service; enabled; preset: enabled)
Active: active (running) since Tue 2025-11-25 16:22:55 +07; 13s ago
Docs: man:php-fpm8.5(8)
Process: 7786 ExecStartPost=/usr/lib/php/php-fpm-socket-helper install /run/php/php-fpm.sock /etc/php/8.5/fpm/pool.>
Main PID: 7783 (php-fpm8.5)
Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0.00req/sec"
Tasks: 3 (limit: 9200)
Memory: 7.9M (peak: 9.1M)
CPU: 58ms
CGroup: /system.slice/php8.5-fpm.service
├─7783 "php-fpm: master process (/etc/php/8.5/fpm/php-fpm.conf)"
├─7784 "php-fpm: pool www"
└─7785 "php-fpm: pool www"

Интеграция с веб-сервером

Apache

Это изменение конфигурации легко выполнить, включив файл конфигурации PHP 8.5

sudo a2enconf php8.5-fpm
Nginx/Angie

Обновите директиву fastcgi_pass со старого пути сокета PHP FPM на новый путь PHP 8.5:

- fastcgi_pass unix:/run/php/php8.4-fpm.sock;
+ fastcgi_pass unix:/run/php/php8.5-fpm.sock;

Дополнительную информацию см. в документации Nginx/Angie.

Caddy

Обновите директиву reverse_proxy, чтобы использовать новый путь к сокету сервера PHP 8.5 FPM:

- reverse_proxy @phpFiles unix//run/php/php8.4-fpm.sock
+ reverse_proxy @phpFiles unix//run/php/php8.5-fpm.sock

Дополнительные расширения PHP

Если необходимы дополнительные расширения, они также могут быть доступны в репозитории с префиксом php8.5-.

Инструменты для разработки

Инструменты отладки и профилирования, такие как Xdebug и инструменты покрытия кода, могут быть установлены в соответствии с теми же правилами именования пакетов.

Xdebug

Установка Xdebug или других расширений для разработки не рекомендуется на рабочих серверах, если это не является строго необходимым.

sudo apt install php8.5-xdebug

Перенос конфигурации

После инсталляции конфигурационные файлы для новой версии PHP будут находиться в каталоге /etc/php/8.5. Существующие версии PHP, скорее всего, установлены в каталогах /etc/php/VERSION.

При желании конфигурацию можно скопировать из более старых версий PHP. Не рекомендуется копировать существующие файлы. Вместо этого рекомендуется проверить различие между файлами php.ini и обновить соответствующие файлыphp.ini для PHP 8.5.

Следующая команда сравнивает файл php.ini CLI PHP 8.4 с файлом PHP 8.5:

diff /etc/php/8.4/cli/php.ini /etc/php/8.5/cli/php.ini

При использовании PHP-FPM убедитесь, что файл /etc/php/8.5/fpm/pool.d/www.conf обновлён в соответствии с конфигурацией старого пула запуска PHP-FPM.

Модули PHP можно устанавливать и отключать с помощью команд phpenmod и phpdismod:

Следующие команды отключают и включают расширение zip в PHP 8.5:

phpdismod -v 8.5 zip
phpenmod -v 8.5 zip

Удаление старых версий PHP

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

sudo apt purge '^php8.4.*'

В приведённом примере используется команда apt purge, которая с помощью подстановочных знаков выбирает все пакеты PHP 8.4.

Запуск PHP 8.5 вместе с другими версиями PHP

При желании, установка PHP 8.5, описанная выше, может сосуществовать с другими версиями PHP.

При установке PHP 8.5 CLI он будет установлен в /usr/bin/php8.5. Другие версии PHP будут установлены в том же месте с суффиксом названия версии (PHP 8.4 в /usr/bin/php8.4). Можно вызвать другие версии PHP CLI напрямую, указав этот путь.

По умолчанию имя команды php будет символически связано с последней версией PHP. Однако с помощью команды update-alternatives это можно изменить на любую другую версию PHP:

sudo update-alternatives --config php

Откроется интерактивный интерфейс для выбора альтернативного пути к бинарному файлу PHP, на который указывает php:

There are 2 choices for the alternative php (providing /usr/bin/php).

Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/bin/php8.5 85 auto mode
1 /usr/bin/php8.4 84 manual mode
2 /usr/bin/php8.5 85 manual mode

Для установки пути без интерактивного запроса:

update-alternatives --set php /usr/bin/php8.5

Краткое руководство

Добавление репозитория PHP 8.5

Ubuntu
sudo LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php # Нажмите Enter для подтверждения.
sudo apt update
Debian
sudo apt-get update
sudo apt-get -y install lsb-release ca-certificates curl apt-transport-https

# Скачайте и добавьте ключ подписи
sudo curl -sSLo /tmp/debsuryorg-archive-keyring.deb https://packages.sury.org/debsuryorg-archive-keyring.deb
sudo dpkg -i /tmp/debsuryorg-archive-keyring.deb
sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'

sudo apt-get update

Установка новых пакетов PHP 8.5

sudo apt install php8.5-cli
# При необходимости измените список расширений
sudo apt install php8.5-common php8.5-{bcmath,bz2,curl,gd,gmp,intl,mbstring,readline,xml,zip}

Интеграция с веб-сервером

Для PHP-FPM:

sudo apt install php8.5-fpm

Затем настройте интеграцию PHP-FPM, специфичную для веб-сервера, в соответствии с адресом сокета слушателя PHP 8.5. По умолчанию сокет будет:

/run/php/php8.5-fpm.sock

Удаление старых PHP пакетов

Для удаления пакетов PHP 8.4 выполните:

apt purge php8.4*

Комментарии


Дополнительные материалы

Предыдущая Статья

Что следует избегать в JavaScript