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

PHP 8.3 — это версия PHP, которая не входит в стандартные репозитории Debian. Debian 13 (Trixie) по умолчанию поставляет PHP 8.4, Debian 12 (Bookworm) — PHP 8.2, а Debian 11 (Bullseye) — PHP 7.4. Для установки PHP 8.3 нужно добавить сторонний репозиторий Ondrej Sury, который поддерживает актуальные версии PHP для Debian. Главные сложности для новичка: правильно добавить репозиторий Sury (через keyring-пакет и DEB822-файл), выбрать подходящий метод (Apache mod_php, Apache + PHP-FPM или Nginx + PHP-FPM), а затем установить версионные расширения (php8.3-*). Также важно не конфликтовать с extrepo, если он использовался ранее.

💡 В этом руководстве вы установите PHP 8.3 на Debian из репозитория Ondrej Sury. Вы узнаете, как настроить PHP 8.3 с Apache (mod_php), с Apache и PHP-FPM, с Nginx и PHP-FPM, установить расширения, переключаться между версиями PHP и решать типичные проблемы.

В этой статье вы узнаете:

  • Как добавить репозиторий Ondrej Sury для PHP 8.3
  • Как установить PHP 8.3 с Apache (mod_php)
  • Как установить PHP 8.3 с Apache и PHP-FPM
  • Как установить PHP 8.3 с Nginx и PHP-FPM
  • Как установить популярные расширения для PHP 8.3
  • Как переключаться между версиями PHP через update-alternatives
  • Как решить типичные проблемы: конфликт Signed-By, не работает FPM-сокет, неправильная версия

Для кого: разработчики и администраторы, которым нужна конкретная версия PHP 8.3 для приложений, не поддерживающих PHP 8.4 (Debian 13) или требующих более новую версию, чем PHP 8.2/7.4.

Оглавление

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

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

  • У вас установлена Debian 11, 12 или 13
  • Подключение к интернету стабильно
  • У вас есть права sudo
  • Веб-сервер (Apache или Nginx) установлен (опционально, но обычно нужен)

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

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

sudo whoami

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

Зачем: Эта команда проверяет, есть ли у вас права sudo. Без них вы не сможете устанавливать пакеты.

✅ Если выводит root — всё в порядке, можете продолжать.

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

1.1 Обновление системы

Перед установкой всегда обновляйте список пакетов.

sudo apt update && sudo apt upgrade -y

Что делает:

  • sudo — права суперпользователя
  • apt update — обновляет список доступных пакетов из репозиториев
  • && — выполняет следующую команду только если предыдущая успешна
  • apt upgrade -y — обновляет все установленные пакеты до последних версий

Зачем: Это стандартная практика безопасности перед установкой нового ПО.

1.2 Установка вспомогательных пакетов

sudo apt install ca-certificates curl -y

Что делает: Устанавливает инструменты для безопасной работы с HTTPS-репозиториями.

2. 📦 Добавление репозитория Ondrej Sury для PHP 8.3

В Debian нет PHP 8.3 в стандартных репозиториях, поэтому добавляем сторонний репозиторий.

2.1 Установка keyring-пакета Sury

curl -fsSLo /tmp/debsuryorg-archive-keyring.deb https://packages.sury.org/debsuryorg-archive-keyring.deb
sudo apt install /tmp/debsuryorg-archive-keyring.deb -y

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

2.2 Создание файла репозитория (DEB822)

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

Что делает: Создаёт файл репозитория в современном формате DEB822.

2.3 Обновление списка пакетов

sudo apt update

3. 🐘 Способ 1: PHP 8.3 с Apache (mod_php) — самый простой

Этот способ подходит для небольших сайтов и локальной разработки.

3.1 Установка PHP 8.3 и модуля Apache

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

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

sudo apache2ctl -M | grep php_module

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

4. 🐘 Способ 2: PHP 8.3 с Apache и PHP-FPM

Этот способ подходит для лучшего разделения процессов.

4.1 Установка PHP 8.3, PHP-FPM и модуля fcgi

sudo apt install apache2 php8.3 php8.3-fpm libapache2-mod-fcgid -y

4.2 Отключение mod_php (если был включён)

sudo a2dismod php8.3

4.3 Включение модулей и конфигурации

sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php8.3-fpm
sudo systemctl restart apache2

4.4 Проверка статуса PHP-FPM

sudo systemctl status php8.3-fpm --no-pager

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

5. 🐘 Способ 3: PHP 8.3 с Nginx и PHP-FPM

Nginx всегда использует PHP-FPM для обработки PHP.

5.1 Установка PHP 8.3 и PHP-FPM

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

5.2 Настройка Nginx

Отредактируйте файл конфигурации вашего сайта (например, /etc/nginx/sites-available/example.com). Внутри блока server добавьте:

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

5.3 Проверка конфигурации и перезагрузка Nginx

sudo nginx -t
sudo systemctl reload nginx

6. 📦 Установка расширений PHP 8.3

Расширения для PHP 8.3 имеют префикс php8.3-.

6.1 Установка популярных расширений

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

6.2 Перезапуск PHP-FPM (если используется)

sudo systemctl restart php8.3-fpm

6.3 Просмотр установленных расширений

php8.3 -m

7. 🔄 Управление несколькими версиями PHP

Если у вас установлено несколько версий PHP (например, 8.2 и 8.3), можно переключать CLI-версию через update-alternatives.

7.1 Просмотр доступных версий

update-alternatives --config php

7.2 Установка PHP 8.3 как версии по умолчанию

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

7.3 Проверка

php --version

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

8. ⚠️ Решение типичных проблем

8.1 Ошибка: Conflicting values set for option Signed-By (конфликт с extrepo)

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

E: Conflicting values set for option Signed-By regarding source https://packages.sury.org/php/ bookworm: /var/lib/extrepo/keys/sury.asc != /usr/share/keyrings/debsuryorg-archive-keyring.gpg

Причина: Репозиторий Sury добавлен дважды (через extrepo и через ручной DEB822).

Решение: Удалите старый extrepo-источник:

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

8.2 Ошибка: 502 Bad Gateway (Nginx + PHP-FPM)

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

Причина: PHP-FPM не запущен или сокет не существует.

Решение:

sudo systemctl restart php8.3-fpm
ls -l /run/php/php8.3-fpm.sock

8.3 Ошибка: php —version показывает старую версию

Симптом: php --version показывает PHP 8.2 или 7.4, хотя PHP 8.3 установлен.

Причина: Симлинк /usr/bin/php указывает на другую версию.

Решение: Переключите версию через update-alternatives (раздел 7).

8.4 Расширение не загружается, хотя пакет установлен

Симптом: php8.3 -m не показывает, например, redis.

Решение: Перезапустите PHP-FPM:

sudo systemctl restart php8.3-fpm

9. ❌ Удаление PHP 8.3

9.1 Удаление пакетов

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

9.2 Удаление репозитория Sury

sudo rm -f /etc/apt/sources.list.d/php.sources
sudo apt remove --purge debsuryorg-archive-keyring -y
sudo apt update

9.3 Проверка удаления

php8.3 --version

Ожидаемый вывод: bash: php8.3: command not found

10. 📝 Чек-лист: всё готово к работе

  • [ ] Система обновлена (sudo apt update && sudo apt upgrade -y)
  • [ ] Репозиторий Sury добавлен и ключ установлен
  • [ ] Выбран и выполнен один из способов установки (mod_php / Apache-FPM / Nginx-FPM)
  • [ ] php --version показывает PHP 8.3.x
  • [ ] Установлены необходимые расширения (php8.3-curl, php8.3-mysql и др.)
  • [ ] Веб-сервер перезапущен и обрабатывает PHP-файлы
  • [ ] Настроено переключение между версиями PHP через update-alternatives

Заключение

Вы установили PHP 8.3 на Debian из репозитория Ondrej Sury. Это позволяет получить современную версию PHP даже на старых выпусках Debian (11 и 12), а также на Debian 13, если ваше приложение требует именно PHP 8.3, а не 8.4. Главное, что нужно запомнить: репозиторий Sury нужно добавить вручную, расширения имеют префикс php8.3-, и важно не конфликтовать с extrepo. Для управления несколькими версиями PHP используйте update-alternatives.

Что дальше:

  • Установите Composer для управления зависимостями PHP
  • Настройте базу данных — MariaDB или MySQL
  • Установите WordPress или Laravel
  • Настройте opcache для ускорения PHP
  • Для кэширования настройте Redis с расширением php8.3-redis