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

PHP 8.2 — это стабильная ветка PHP, которая до сих пор широко используется в корпоративных проектах. Она получает обновления безопасности до 31 декабря 2026 года. Если ваше приложение зафиксировано на PHP 8.2 (например, старая версия Laravel, Drupal или WordPress с плагинами, несовместимыми с PHP 8.3+), это руководство для вас.

В этом руководстве я покажу два способа установки PHP 8.2 на Debian:

  1. Из официальных репозиториев Debian (только Debian 12)
  2. Из репозитория Sury (Debian 13 и 11)
Релиз DebianPHP по умолчаниюPHP 8.2 в репозиторииНужен Sury?
Debian 13 (Trixie)8.4❌ Нет✅ Да
Debian 12 (Bookworm)8.2✅ Да❌ Нет
Debian 11 (Bullseye)7.4❌ Нет✅ Да

⚠️ Для новых проектов рекомендуется PHP 8.4 или выше. PHP 8.2 используйте только если ваше приложение требует именно эту версию.


Оглавление

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

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

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

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

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

sudo whoami

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

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

root

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


Способ 1: Установка PHP 8.2 из репозиториев Debian (Debian 12)

Debian 12 (Bookworm) содержит PHP 8.2 в официальных репозиториях.

Шаг 1: Обновите систему

sudo apt update && sudo apt upgrade -y

Шаг 2: Проверьте, что пакет php8.2 доступен

apt-cache policy php8.2

Ожидаемый вывод: Должна быть строка с bookworm-security или bookworm/main.

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

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

Установка PHP 8.2 с Apache mod_php

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

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

sudo a2query -m php8.2

Ожидаемый вывод: php8.2 (enabled by maintainer script)


Установка PHP 8.2 с Apache и PHP-FPM

sudo apt install -y php8.2-cli php8.2-fpm libapache2-mod-fcgid
sudo a2dismod php8.2   # если был включён mod_php
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php8.2-fpm
sudo systemctl enable php8.2-fpm --now
sudo systemctl restart apache2

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

systemctl status php8.2-fpm --no-pager | head -n 8

Ожидаемый вывод: Active: active (running)


Установка PHP 8.2 с Nginx и PHP-FPM

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

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

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

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

sudo nginx -t
sudo systemctl reload nginx

Способ 2: Установка PHP 8.2 из репозитория Sury (Debian 13 и 11)

Для Debian 13 и 11 используем репозиторий Sury (deb.sury.org).

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

sudo apt install -y ca-certificates curl

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

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

Шаг 3: Добавьте репозиторий Sury

CODENAME=$(. /etc/os-release && echo "$VERSION_CODENAME")
ARCH=$(dpkg --print-architecture)

cat <<EOF | sudo tee /etc/apt/sources.list.d/php.sources
Types: deb
URIs: https://packages.sury.org/php/
Suites: ${CODENAME}
Components: main
Architectures: ${ARCH}
Signed-By: /usr/share/keyrings/deb.sury.org-php.gpg
EOF

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

sudo apt update

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

apt-cache policy php8.2

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

Шаг 6: Установите PHP 8.2 (выберите один из вариантов выше — mod_php, Apache+FPM или Nginx+FPM)


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

Установите наиболее популярные расширения:

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

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

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

⚠️ Примечание: Пакета php8.2-json не существует — JSON встроен в PHP 8.x.

Перезапустите обработчик PHP:

Для Apache mod_php:

sudo systemctl restart apache2

Для PHP-FPM:

sudo systemctl restart php8.2-fpm

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

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

Управление версиями PHP CLI

Если на системе установлено несколько версий PHP (например, 8.2 и 8.4), вы можете переключаться между ними.

Список установленных версий:

update-alternatives --display php

Установить PHP 8.2 как версию по умолчанию для CLI:

sudo update-alternatives --set php /usr/bin/php8.2

Проверьте:

php --version

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


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

8.1 Ошибка: Unable to locate package php8.2

Симптом: sudo apt install php8.2-cli не находит пакет.

Причина: На Debian 13 или 11 нет PHP 8.2 в официальных репозиториях.

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

Используйте метод 2 (репозиторий Sury).


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

Симптом: sudo apt update выдаёт ошибку конфликта Signed-By.

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

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

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

sudo rm -f /etc/apt/sources.list.d/extrepo_sury.sources

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

sudo apt update

8.3 Ошибка: PHP-файлы скачиваются, а не выполняются (Apache)

Симптом: При открытии .php-файла браузер предлагает его скачать.

Причина: Модуль PHP не загружен или используется неправильный обработчик.

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

Шаг 1: Убедитесь, что модуль включён:

sudo a2query -m php8.2

Шаг 2: Если нет — включите:

sudo a2enmod php8.2
sudo systemctl restart apache2

Шаг 3: Если используется PHP-FPM, проверьте, что конфигурация включена:

sudo a2enconf php8.2-fpm
sudo systemctl restart apache2

8.4 Ошибка: php8.2-fpm.sock not found (502 Bad Gateway)

Симптом: Nginx возвращает 502.

Причина: PHP-FPM не запущен.

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

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

sudo systemctl enable php8.2-fpm --now

Шаг 2: Проверьте, что сокет существует:

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

8.5 Расширение не загружается

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

Причина: Не перезапущен обработчик PHP.

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

Для Apache mod_php:

sudo systemctl restart apache2

Для PHP-FPM:

sudo systemctl restart php8.2-fpm

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

  • [ ] PHP 8.2 установлен: php --versionPHP 8.2.x
  • [ ] CLI версия правильная (если несколько версий): update-alternatives --list php
  • [ ] Нужные расширения установлены: php -m | grep mbstring (и другие)
  • [ ] Веб-интеграция работает: создайте info.php с <?php phpinfo(); ?>, откройте в браузере
  • [ ] PHP-FPM (если используется): systemctl status php8.2-fpmactive (running)
  • [ ] Сокет существует (для Nginx): ls -l /run/php/php8.2-fpm.sock

Удаление PHP 8.2

Удаление Debian APT-версии

sudo apt remove --purge php8.2* php-common
sudo apt autoremove

Удаление Sury-версии (Debian 13/11)

sudo apt remove --purge php8.2* php-common
sudo apt autoremove
sudo rm -f /etc/apt/sources.list.d/php.sources /usr/share/keyrings/deb.sury.org-php.gpg
sudo apt update

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

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

Вопрос: Нужно ли удалять старую версию PHP перед установкой 8.2?
Ответ: Нет, можно установить несколько версий и переключаться через update-alternatives.

Вопрос: Почему пакет php8.2-json не устанавливается?
Ответ: JSON встроен в PHP 8.x, отдельный пакет не нужен.

Вопрос: Какой способ интеграции с веб-сервером выбрать?
Ответ: Для Nginx — только PHP-FPM. Для Apache: mod_php (проще) или PHP-FPM (лучше для продакшена).

Вопрос: Когда PHP 8.2 перестанет поддерживаться?
Ответ: Конец поддержки безопасности — 31 декабря 2026 года.


Заключение

Теперь PHP 8.2 установлен на вашем Debian. Вы можете запускать приложения, требующие именно эту версию.

Что дальше?