PHP 8.4 — это последняя стабильная ветка PHP, выпущенная в ноябре 2024 года. Она приносит множество новых возможностей: property hooks, asymmetric visibility, обновлённое HTML5 DOM API и другие улучшения производительности. PHP 8.4 активно поддерживается до декабря 2026 года, а критическая безопасность — до декабря 2028 года.
В Debian версия PHP по умолчанию зависит от релиза:
| Релиз Debian | PHP по умолчанию | Нужен ли Sury репозиторий для PHP 8.4 |
|---|---|---|
| Debian 13 (Trixie) | PHP 8.4 | ❌ Нет, устанавливается из официальных репозиториев |
| Debian 12 (Bookworm) | PHP 8.2 | ✅ Да |
| Debian 11 (Bullseye) | PHP 7.4 | ✅ Да |
В этом руководстве я покажу, как установить PHP 8.4 на 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.
Обновление системы
sudo apt update && sudo apt upgrade -y
Установка PHP 8.4 на Debian 13 (Trixie)
Debian 13 уже содержит PHP 8.4 в официальных репозиториях.
Шаг 1: Проверьте, что PHP 8.4 доступен
apt-cache policy php8.4
✅ Ожидаемый вывод: 8.4.x из репозиториев Debian.
Шаг 2: Установите PHP 8.4 и CLI
sudo apt install -y php8.4 php8.4-cli
Шаг 3: Проверьте версию
php --version
✅ Ожидаемый вывод: PHP 8.4.x
Установка PHP 8.4 на Debian 12 и Debian 11 (через репозиторий Sury)
Debian 12 и 11 не содержат PHP 8.4 в своих стандартных репозиториях. Добавим репозиторий Sury, который поддерживает актуальные версии PHP для старых Debian.
Шаг 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: Определите кодовое имя вашего Debian
CODENAME=$(. /etc/os-release && echo "$VERSION_CODENAME")
printf 'Using suite: %s\n' "$CODENAME"
✅ Ожидаемый вывод: bookworm (Debian 12) или bullseye (Debian 11).
Шаг 4: Добавьте репозиторий Sury (DEB822 формат)
printf '%s\n' \
"Types: deb" \
"URIs: https://packages.sury.org/php/" \
"Suites: $CODENAME" \
"Components: main" \
"Signed-By: /usr/share/keyrings/deb.sury.org-php.gpg" | sudo tee /etc/apt/sources.list.d/php.sources > /dev/null
Шаг 5: Обновите список пакетов
sudo apt update
Шаг 6: Проверьте, что PHP 8.4 теперь доступен
apt-cache policy php8.4
✅ Ожидаемый вывод: Должна быть строка с packages.sury.org.
Шаг 7: Установите PHP 8.4 и CLI
sudo apt install -y php8.4 php8.4-cli
Выбор интеграции с веб-сервером
После установки базовых пакетов выберите способ интеграции PHP с веб-сервером.
| Метод | Пакеты | Для кого |
|---|---|---|
| Apache mod_php | apache2, libapache2-mod-php8.4 | Локальная разработка, небольшие сайты |
| Apache + PHP-FPM | apache2, php8.4-fpm, libapache2-mod-fcgid | Продакшен Apache с разделением процессов |
| Nginx + PHP-FPM | nginx, php8.4-fpm | Серверы на Nginx (LEMP) |
Apache mod_php (простой способ)
sudo apt install -y apache2 libapache2-mod-php8.4
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.4-fpm libapache2-mod-fcgid
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php8.4-fpm
sudo systemctl enable php8.4-fpm --now
sudo systemctl restart apache2
Проверьте, что PHP-FPM работает:
systemctl is-active php8.4-fpm
ls -l /run/php/php8.4-fpm.sock
✅ Ожидаемый вывод: active и srw-rw---- ... php8.4-fpm.sock
Nginx + PHP-FPM (LEMP)
sudo apt install -y nginx php8.4-fpm
sudo systemctl enable php8.4-fpm --now
Добавьте в конфигурацию Nginx (в блок server { ... }):
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.4-fpm.sock;
}
Проверьте и перезагрузите Nginx:
sudo nginx -t
sudo systemctl reload nginx
Установка PHP-расширений
Большинство приложений требуют дополнительные расширения. Установите наиболее популярные:
sudo apt install -y php8.4-curl php8.4-gd php8.4-mbstring php8.4-mysql php8.4-xml php8.4-zip php8.4-intl php8.4-bcmath php8.4-imagick php8.4-redis php8.4-memcached php8.4-soap php8.4-apcu
Что делает каждое расширение (кратко):
php8.4-curl— работа с HTTP-запросами (например, API)php8.4-gd— обработка изображенийphp8.4-mbstring— работа с многобайтовыми строками (кириллица, UTF-8)php8.4-mysql— подключение к MySQL/MariaDBphp8.4-xml— обработка XML, DOM (нужен для PHPUnit, Composer)php8.4-zip— работа с ZIP-архивамиphp8.4-intl— интернационализацияphp8.4-bcmath— математические операции с произвольной точностью
⚠️ Примечание: Пакета php8.4-json не существует — JSON встроен в PHP 8.x.
Перезапустите обработчик PHP после установки расширений:
Для Apache mod_php:
sudo systemctl restart apache2
Для Apache или Nginx с PHP-FPM:
sudo systemctl restart php8.4-fpm
Проверьте, что расширения загружены:
php8.4 -m | grep -E 'curl|gd|mbstring|mysqli|xml|zip'
Проверка установки
php --version
✅ Ожидаемый вывод: PHP 8.4.x
Обновление PHP 8.4
sudo apt update
sudo apt install --only-upgrade -y php8.4 php8.4-cli php8.4-fpm
(добавьте любые другие пакеты php8.4-*, которые вы установили)
Удаление PHP 8.4
Шаг 1: Удалите пакеты
sudo apt purge -y 'php8.4*'
sudo apt autoremove --purge -y
Шаг 2: Удалите репозиторий Sury (только для Debian 12/11)
sudo rm -f /etc/apt/sources.list.d/php.sources /usr/share/keyrings/deb.sury.org-php.gpg
sudo apt update
Шаг 3: Проверьте, что пакетов PHP 8.4 не осталось
dpkg -l 'php8.4*' 2>/dev/null | grep '^ii' || echo 'No installed php8.4 packages remain.'
Решение типичных проблем
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.4-fpm.sock not found / 502 Bad Gateway
Симптом: Nginx возвращает 502, сокет PHP-FPM не существует.
Причина: PHP-FPM не запущен или путь в конфигурации Nginx неверный.
Пошаговое решение:
Шаг 1: Проверьте статус PHP-FPM:
systemctl status php8.4-fpm
Шаг 2: Запустите PHP-FPM:
sudo systemctl enable php8.4-fpm --now
Шаг 3: Убедитесь, что сокет существует:
ls -l /run/php/php8.4-fpm.sock
Шаг 4: Проверьте путь в конфигурации Nginx:
fastcgi_pass unix:/run/php/php8.4-fpm.sock;
8.3 Ошибка: PHPUnit требует mbstring или DOM
Симптом: При запуске PHPUnit появляется ошибка:
phpunit requires the "dom", "json", "libxml", "mbstring", ... extensions, but the "mbstring" extension is not available.
Причина: Не установлены пакеты php8.4-mbstring и php8.4-xml (который даёт DOM).
Пошаговое решение:
Шаг 1: Установите недостающие расширения:
sudo apt install -y php8.4-mbstring php8.4-xml
Шаг 2: Проверьте, что расширения загружены:
php8.4 -m | grep -E 'mbstring|dom|xmlwriter'
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.4 не видит установленные расширения
Симптом: Расширение установлено, но php -m его не показывает.
Причина: Вы перезапустили не тот обработчик, или используется CLI с другой конфигурацией.
Пошаговое решение:
Шаг 1: Убедитесь, что вы перезапустили правильный сервис:
- Для Apache mod_php:
sudo systemctl restart apache2 - Для PHP-FPM:
sudo systemctl restart php8.4-fpm
Шаг 2: Проверьте расширение через CLI с правильным путём:
php8.4 -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 установлен:
php --version→PHP 8.4.x - [ ] CLI работает:
php -r "echo PHP_VERSION;"→8.4.x - [ ] Нужные расширения установлены:
php -m | grep mbstring(и другие) - [ ] Веб-интеграция работает: создайте
info.php, откройте в браузере - [ ] PHP-FPM (если используется):
systemctl status php8.4-fpm→active - [ ] Сокет существует (для Nginx):
ls -l /run/php/php8.4-fpm.sock
Часто задаваемые вопросы (FAQ)
Вопрос: Какая версия PHP по умолчанию в Debian 13?
Ответ: Debian 13 (Trixie) поставляется с PHP 8.4 в официальных репозиториях.
Вопрос: Нужно ли добавлять репозиторий Sury на Debian 13?
Ответ: Нет, PHP 8.4 уже есть в стандартных репозиториях.
Вопрос: Почему на Debian 12 и 11 нет PHP 8.4?
Ответ: Старые релизы Debian не обновляют версии PHP, только делают бэкпорты безопасности. Sury предоставляет свежие версии.
Вопрос: Существует ли пакет php8.4-json?
Ответ: Нет. JSON встроен в PHP 8.x.
Вопрос: Что делать, если сайт не работает после обновления с PHP 8.2 до 8.4?
Ответ: Проверьте совместимость ваших скриптов с PHP 8.4 (breaking changes). Включите отображение ошибок в php.ini:
display_errors = On
error_reporting = E_ALL
Заключение
Теперь PHP 8.4 установлен на вашем Debian. Вы можете разрабатывать современные приложения с новыми возможностями языка и улучшенной производительностью.
Что дальше?
- Установите Composer для управления зависимостями
- Установите WordPress или Laravel
- Настройте Nginx/Apache с Let’s Encrypt для HTTPS