Установка PHP 8.5 на Debian 13, 12, 11: полное руководство

PHP 8.5 — это последняя стабильная ветка PHP, выпущенная в ноябре 2025 года. Она приносит оператор pipe, расширение URI, новые вспомогательные функции для работы с массивами и другие улучшения производительности. PHP 8.5 активно поддерживается до декабря 2027 года, а критическая безопасность — до декабря 2029 года.

В Debian версия PHP по умолчанию зависит от релиза:

Релиз DebianPHP по умолчаниюНужен ли Sury репозиторий для PHP 8.5
Debian 13 (Trixie)PHP 8.4✅ Да
Debian 12 (Bookworm)PHP 8.2✅ Да
Debian 11 (Bullseye)PHP 7.4✅ Да

⚠️ Важно: На всех версиях Debian (включая Debian 13) для установки PHP 8.5 необходим репозиторий Sury. В стандартных репозиториях Debian 13 есть только PHP 8.4.

В этом руководстве я покажу, как установить PHP 8.5 на Debian 13, 12 и 11 с поддержкой Apache mod_php, Apache + PHP-FPM или Nginx + PHP-FPM, а также настроить необходимые расширения.


Оглавление

Предварительные требования

Перед установкой убедитесь, что:

  • У вас есть доступ к интернету
  • Вы имеете права sudo (администратора)

⚠️ ВАЖНО: Проверьте права sudo перед установкой

Если вы не уверены, есть ли у вашего пользователя права администратора, выполните в терминале:

sudo whoami

Что делает: sudo — выполняет команду от имени суперпользователя; whoami — показывает имя текущего пользователя.

Ожидаемый вывод в терминале:

root

❌ Если выводит is not in the sudoers file — сначала пройдите наше руководство по настройке sudo.


Обновление системы и проверка версии Debian

sudo apt update && sudo apt upgrade -y

Что делает: Обновляет список пакетов и устанавливает последние обновления.

grep '^VERSION_CODENAME=' /etc/os-release

Что делает: Выводит кодовое имя вашего Debian.

Ожидаемый вывод:

  • Debian 13: VERSION_CODENAME=trixie
  • Debian 12: VERSION_CODENAME=bookworm
  • Debian 11: VERSION_CODENAME=bullseye

Зачем: Кодовое имя нужно для правильной настройки репозитория Sury.


Добавление репозитория Sury (для всех версий Debian)

Debian 13, 12 и 11 не содержат PHP 8.5 в своих стандартных репозиториях. Добавим репозиторий Sury, который поддерживает актуальные версии PHP.

Шаг 1: Установите зависимости

sudo apt install -y ca-certificates curl

Что делает: Устанавливает пакеты для работы с HTTPS и скачивания ключей.

Шаг 2: Добавьте GPG-ключ репозитория Sury

sudo curl -fsSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg

Что делает: Скачивает и сохраняет GPG-ключ репозитория Sury.

Шаг 3: Добавьте репозиторий Sury (DEB822 формат)

. /etc/os-release
printf '%s\n' \
  "Types: deb" \
  "URIs: https://packages.sury.org/php/" \
  "Suites: $VERSION_CODENAME" \
  "Components: main" \
  "Signed-By: /usr/share/keyrings/deb.sury.org-php.gpg" | sudo tee /etc/apt/sources.list.d/php.sources > /dev/null

Что делает: Создаёт файл репозитория в современном формате DEB822. Переменная $VERSION_CODENAME подставляет ваше кодовое имя (trixie, bookworm или bullseye).

Шаг 4: Обновите список пакетов

sudo apt update

Шаг 5: Проверьте, что PHP 8.5 теперь доступен

apt-cache policy php8.5

Ожидаемый вывод: Должна быть строка с packages.sury.org.

Шаг 6: Установите PHP 8.5 и CLI

sudo apt install -y php8.5 php8.5-cli

Выбор интеграции с веб-сервером

После установки базовых пакетов выберите способ интеграции PHP с веб-сервером.

МетодПакетыДля кого
Apache mod_phpapache2, libapache2-mod-php8.5Локальная разработка,
небольшие сайты
Apache + PHP-FPMapache2, php8.5-fpm, libapache2-mod-fcgidПродакшен Apache с
разделением процессов
Nginx + PHP-FPMnginx, php8.5-fpm, php8.5-cliСерверы на Nginx (LEMP)

Apache mod_php (простой способ)

sudo apt install -y apache2 libapache2-mod-php8.5
sudo systemctl restart apache2

Проверьте, что модуль PHP загружен:

sudo /usr/sbin/apache2ctl -M 2>/dev/null | grep php

Ожидаемый вывод: php_module (shared)


Apache + PHP-FPM (продакшен)

sudo apt install -y apache2 php8.5-fpm libapache2-mod-fcgid
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php8.5-fpm
sudo systemctl enable php8.5-fpm --now
sudo systemctl restart apache2

Проверьте, что PHP-FPM работает:

systemctl is-active php8.5-fpm
ls -l /run/php/php8.5-fpm.sock

Ожидаемый вывод: active и srw-rw---- ... php8.5-fpm.sock


Nginx + PHP-FPM (LEMP)

sudo apt install -y nginx php8.5-fpm php8.5-cli
sudo systemctl enable php8.5-fpm --now

Добавьте в конфигурацию Nginx (в блок server { ... }):

location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php8.5-fpm.sock;
}

Проверьте и перезагрузите Nginx:

sudo nginx -t
sudo systemctl reload nginx

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

Большинство приложений требуют дополнительные расширения. Установите наиболее популярные:

sudo apt install -y php8.5-curl php8.5-mysql php8.5-gd php8.5-zip php8.5-intl php8.5-bcmath php8.5-imagick php8.5-xmlrpc php8.5-readline php8.5-memcached php8.5-redis php8.5-mbstring php8.5-apcu php8.5-xml php8.5-xdebug php8.5-soap

Что делает каждое расширение (кратко):

  • php8.5-curl — работа с HTTP-запросами (например, API)
  • php8.5-mysql — подключение к MySQL/MariaDB (включает mysqli и pdo_mysql)
  • php8.5-gd — обработка изображений
  • php8.5-mbstring — работа с многобайтовыми строками (кириллица, UTF-8)
  • php8.5-xml — обработка XML, DOM (нужен для PHPUnit, Composer)
  • php8.5-zip — работа с ZIP-архивами
  • php8.5-intl — интернационализация
  • php8.5-bcmath — математические операции с произвольной точностью

⚠️ Примечания:

  • Пакета php8.5-opcache не существует — Zend OPcache входит в php8.5-common
  • Пакета php8.5-json не существует — JSON встроен в PHP 8.x

Перезапустите обработчик PHP после установки расширений:

Для Apache mod_php:

sudo systemctl restart apache2

Для Apache или Nginx с PHP-FPM:

sudo systemctl restart php8.5-fpm

Проверьте, что расширения загружены:

php8.5 -m | grep -E 'curl|gd|mbstring|mysqli|xml'

Проверка установки

php --version

Ожидаемый вывод: PHP 8.5.x


Обновление PHP 8.5

sudo apt update
sudo apt install --only-upgrade -y php8.5 php8.5-cli php8.5-fpm

(добавьте любые другие пакеты php8.5-*, которые вы установили)


Удаление PHP 8.5

Шаг 1: Удалите пакеты

sudo apt remove 'php8.5*'
sudo apt purge 'php8.5*'
sudo apt autoremove -y

Шаг 2: Удалите репозиторий Sury

sudo rm -f /etc/apt/sources.list.d/php.sources /usr/share/keyrings/deb.sury.org-php.gpg
sudo apt update

Шаг 3: Проверьте, что пакетов PHP 8.5 не осталось

dpkg -l | grep php8.5

(отсутствие вывода = всё удалено)


Решение типичных проблем

8.1 Ошибка: Signed-By conflict с extrepo

Симптом: sudo apt update выводит ошибку о конфликте Signed-By для репозитория Sury.

Причина: Раньше вы использовали extrepo для Sury, а теперь добавляете ручной репозиторий.

Пошаговое решение:

Шаг 1: Удалите старые файлы extrepo:

sudo rm -f /etc/apt/sources.list.d/extrepo_sury.sources /var/lib/extrepo/keys/sury.asc

Шаг 2: Обновите список пакетов:

sudo apt update

8.2 Ошибка: php8.5-fpm.sock not found / 502 Bad Gateway

Симптом: Nginx возвращает 502, сокет PHP-FPM не существует.

Причина: PHP-FPM не запущен или путь в конфигурации Nginx неверный.

Пошаговое решение:

Шаг 1: Проверьте статус PHP-FPM:

systemctl status php8.5-fpm

Шаг 2: Запустите PHP-FPM:

sudo systemctl enable php8.5-fpm --now

Шаг 3: Убедитесь, что сокет существует:

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

Шаг 4: Проверьте путь в конфигурации Nginx:

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

8.3 Ошибка: Unable to locate package php8.5-opcache

Симптом: Попытка установить php8.5-opcache выдаёт ошибку, что пакет не найден.

Причина: Sury не публикует отдельный пакет php8.5-opcache. OPcache входит в php8.5-common.

Пошаговое решение:

Не ищите php8.5-opcache. Установите php8.5 или php8.5-common:

sudo apt install -y php8.5

OPcache будет установлен автоматически. Проверьте:

php --version | grep OPcache

Ожидаемый вывод: with Zend OPcache v8.5.x


8.4 Ошибка: GPG key error при apt update

Симптом: sudo apt update выдаёт ошибку NO_PUBKEY.

Причина: Ключ репозитория Sury устарел или повреждён.

Пошаговое решение:

Шаг 1: Скачайте ключ заново:

sudo curl -fsSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg

Шаг 2: Обновите список пакетов:

sudo apt update

8.5 Ошибка: PHP 8.5 не видит установленные расширения

Симптом: Расширение установлено, но php -m его не показывает.

Причина: Вы перезапустили не тот обработчик, или используется CLI с другой конфигурацией.

Пошаговое решение:

Шаг 1: Убедитесь, что вы перезапустили правильный сервис:

  • Для Apache mod_php: sudo systemctl restart apache2
  • Для PHP-FPM: sudo systemctl restart php8.5-fpm

Шаг 2: Проверьте расширение через CLI с правильным путём:

php8.5 -m | grep имя_расширения

Шаг 3: Сравните с веб-версией. Создайте файл info.php:

echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php

Откройте в браузере http://ваш-сервер/info.php и найдите расширение.

Шаг 4: Удалите info.php после проверки:

sudo rm /var/www/html/info.php

Переключение между версиями PHP (8.4 и 8.5)

Sury позволяет держать несколько версий PHP одновременно.

Переключение CLI версии по умолчанию

sudo update-alternatives --config php

Выберите нужную версию из списка.

Переключение Apache mod_php

sudo a2dismod php8.4
sudo a2enmod php8.5
sudo systemctl restart apache2

Переключение Apache с PHP-FPM

sudo a2disconf php8.4-fpm
sudo a2enconf php8.5-fpm
sudo systemctl restart apache2

Переключение Nginx с PHP-FPM

Измените путь к сокету в конфигурации:

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

Затем перезагрузите Nginx:

sudo nginx -t
sudo systemctl reload nginx

Чек-лист: что проверить после установки

  • [ ] PHP 8.5 установлен: php --versionPHP 8.5.x
  • [ ] CLI работает: php -r "echo PHP_VERSION;"8.5.x
  • [ ] Нужные расширения установлены: php -m | grep mbstring (и другие)
  • [ ] Веб-интеграция работает: создайте info.php, откройте в браузере
  • [ ] PHP-FPM (если используется): systemctl status php8.5-fpmactive
  • [ ] Сокет существует (для Nginx): ls -l /run/php/php8.5-fpm.sock

Часто задаваемые вопросы (FAQ)

Вопрос: Какая версия PHP по умолчанию в Debian 13?
Ответ: Debian 13 (Trixie) поставляется с PHP 8.4. PHP 8.5 требует репозиторий Sury.

Вопрос: Нужно ли добавлять репозиторий Sury на Debian 13 для PHP 8.5?
Ответ: Да, в стандартных репозиториях Debian 13 нет PHP 8.5.

Вопрос: Почему нет пакета php8.5-opcache?
Ответ: OPcache встроен в php8.5-common, который устанавливается вместе с php8.5. Отдельного пакета не требуется.

Вопрос: Существует ли пакет php8.5-json?
Ответ: Нет. JSON встроен в PHP 8.x.

Вопрос: Могу ли я установить PHP 8.5 рядом с PHP 8.4?
Ответ: Да, Sury позволяет держать несколько версий одновременно.


Заключение

Теперь PHP 8.5 установлен на вашем Debian. Вы можете разрабатывать современные приложения с новыми возможностями языка и улучшенной производительностью.

Что дальше?