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.
Что дальше: