PHP 8.5 — это последняя стабильная ветка PHP, выпущенная в ноябре 2025 года. Она приносит оператор pipe, расширение URI, новые вспомогательные функции для работы с массивами и другие улучшения производительности. PHP 8.5 активно поддерживается до декабря 2027 года, а критическая безопасность — до декабря 2029 года.
В Debian версия PHP по умолчанию зависит от релиза:
| Релиз Debian | PHP по умолчанию | Нужен ли 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_php | apache2, libapache2-mod-php8.5 | Локальная разработка, небольшие сайты |
| Apache + PHP-FPM | apache2, php8.5-fpm, libapache2-mod-fcgid | Продакшен Apache с разделением процессов |
| Nginx + PHP-FPM | nginx, 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 --version→PHP 8.5.x - [ ] CLI работает:
php -r "echo PHP_VERSION;"→8.5.x - [ ] Нужные расширения установлены:
php -m | grep mbstring(и другие) - [ ] Веб-интеграция работает: создайте
info.php, откройте в браузере - [ ] PHP-FPM (если используется):
systemctl status php8.5-fpm→active - [ ] Сокет существует (для 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. Вы можете разрабатывать современные приложения с новыми возможностями языка и улучшенной производительностью.
Что дальше?
- Установите Composer для управления зависимостями
- Установите WordPress или Laravel
- Настройте Nginx/Apache с Let’s Encrypt для HTTPS