Руководство по установке и обновлению PHP 8.5 для Debian и Ubuntu
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 расширение Opcache больше не является опциональным. В предыдущих версиях PHP расширение Opcache можно было отключить, но теперь оно всегда включено (аналогично основным расширениям, таким как PCRE, Hash, Filter и т. д.). Устанавливать расширение Opcache больше не нужно.
- В PHP 8.5 добавлены два новых расширения ядра
uriиlexbor. Они также всегда включены. - В PHP 8.5 введена новая INI-директива
max_memory_limit, ограничивающая значениеmemory_limitмаксимальным значением, установленнымmax_memory_limit. По умолчанию директиваmax_memory_limitотключена. - CLI опция
php -zудалена. Она уже давно не функционировала, и существует альтернатива, совместимая с разными версиями. - INI-директива
disable_classesудалена.
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 updateDebian 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-fpmNginx/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 updateDebian
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*