---
title: 'Как установить PHP 8.4, 7.4 и другие на Debian 13 | Zomro'
description: ''
image: 'https://zomro.com/static/site/images/logo/logo-white.png?v=1790950739'
---

![opened image]()

  * [Zomro](https://zomro.com/rus/)
  * [FAQ](https://zomro.com/rus/blog/faq/)
  * Как установить PHP 8.4, 7.4 и другие на Debian 13 



# Как установить PHP 8.4, 7.4 и другие на Debian 13

22-10-2025

Руководство по установке **нескольких версий PHP** на Debian 13 (trixie) из репозитория **Sury** , с параллельной установкой разных веток и подключением к **Apache через libapache2-mod-php** (без PHP‑FPM).

## Установка из репозитория Sury

Официальный репозиторий Debian 13 предоставляет актуальную ветку PHP (на момент релиза — 8.4). Репозиторий **Sury** нужен, если:

  * вам требуется **несколько версий** (например, 8.4 + 8.2 для разных проектов);

  * нужны **устаревшие** ветки (с рисками) или дополнительные сборки/модули;

  * вы хотите быстрее получать минорные/патч‑обновления.




> В продакшене используйте поддерживаемые ветки, а старые — только изолированно и осознанно.

## Предварительные условия
    
    
    sudo apt update
    sudo apt install -y curl ca-certificates gnupg lsb-release apache2
    

Проверьте кодовое имя ОС:
    
    
    lsb_release -sc   # должно вывести: trixie
    

## 

## 

## Добавляем репозиторий PHP **Sury** для **Debian 13** **trixie**
    
    
    # 2.1 Импорт ключа и подготовка каталога ключей
    sudo install -m 0755 -d /usr/share/keyrings
    curl -fsSL https://packages.sury.org/php/apt.gpg \
      | sudo gpg --dearmor -o /usr/share/keyrings/sury-php.gpg
    
    # 2.2 Подключаем репозиторий Sury именно для trixie
    echo "deb [signed-by=/usr/share/keyrings/sury-php.gpg] https://packages.sury.org/php/ trixie main" \
      | sudo tee /etc/apt/sources.list.d/sury-php.list
    
    # 2.3 Обновляем индексы
    sudo apt update
    

**Важно:** не используйте `bookworm` на Debian 13 — иначе смешаете репозитории разных релизов.

## Установка нескольких версий PHP

### PHP‑CLI для всех нужных веток
    
    
    sudo apt install -y php8.4 php8.3 php8.2
    php -v  # покажет текущий CLI по умолчанию
    

### 

### Базовые модули (подберите по задачам)

> Устанавливаем **apache-модули** для нужных веток (без FPM). В один момент времени Apache может использовать **только один** модуль `libapache2-mod-php*`, но пакеты нескольких версий можно держать установленными параллельно.
    
    
    sudo apt install -y \
      libapache2-mod-php8.4 php8.4-cli php8.4-mysql php8.4-xml php8.4-curl php8.4-mbstring php8.4-zip php8.4-gd \
      libapache2-mod-php8.3 php8.3-cli php8.3-mysql php8.3-xml php8.3-curl php8.3-mbstring php8.3-zip php8.3-gd \
      libapache2-mod-php8.2 php8.2-cli php8.2-mysql php8.2-xml php8.2-curl php8.2-mbstring php8.2-zip php8.2-gd
    

### 

### 

### Активация нужной версии в Apache (переключение между модулями)
    
    
    # Пример: включить PHP 8.4 в Apache
    sudo a2dismod php8.2 php8.3 2>/dev/null || true
    sudo a2enmod  php8.4
    sudo systemctl reload apache2
    
    # Переключиться на PHP 8.3
    sudo a2dismod php8.4 php8.2 2>/dev/null || true
    sudo a2enmod  php8.3
    sudo systemctl reload apache2
    
    # Переключиться на PHP 8.2
    sudo a2dismod php8.4 php8.3 2>/dev/null || true
    sudo a2enmod  php8.2
    sudo systemctl reload apache2
    

Список активных модулей: `apache2ctl -M | grep php`.

## Переключение версии для **CLI** (`php` в терминале)
    
    
    sudo update-alternatives --config php
    # при необходимости также
    sudo update-alternatives --config phar
    sudo update-alternatives --config phar.phar
    

Проверьте:
    
    
    php -v
    

> Клиентская версия CLI **не влияет** на то, какую версию использует Apache — это настраивается модулем `libapache2-mod-phpX.Y`.

## Apache + libapache2-mod-php

Apache загружает модуль `libapache2-mod-phpX.Y`, который обрабатывает `.php` внутри самого веб‑сервера. Это просто и быстро для одиночного хоста.

### Виртуальные хосты (базовая схема)

При использовании `libapache2-mod-php` дополнительный `SetHandler` не требуется — обработка PHP включается самим модулем.

Достаточно стандартного vhost:
    
    
    <VirtualHost *:80>
        ServerName app.example
        DocumentRoot /var/www/app/public
    
        <Directory /var/www/app/public>
            AllowOverride All
            Require all granted
        </Directory>
    
        ErrorLog  ${APACHE_LOG_DIR}/app-error.log
        CustomLog ${APACHE_LOG_DIR}/app-access.log combined
    </VirtualHost>
    

Активируйте сайт и перезагрузите Apache:
    
    
    sudo a2ensite app.example.conf
    sudo systemctl reload apache2
    

> Напоминание: одновременно может быть активен **только один** модуль `phpX.Y` для всего Apache. Для разных проектов с разными версиями на **одном** Apache без FPM это ограничение не обойти.

## Nginx (замечание)

В связке с Nginx обработка PHP выполняется **только** через FastCGI (обычно PHP‑FPM). Поскольку в этой инструкции FPM **не используем** , Nginx здесь не рассматривается.

## Типовые модули и php.ini

### Список установленных модулей
    
    
    php8.4 -m | sort
    php8.3 -m | sort
    php8.2 -m | sort
    

### 

### Настройка `php.ini`

Файлы для Apache‑SAPI:

  * `/etc/php/8.4/apache2/php.ini`

  * `/etc/php/8.3/apache2/php.ini`

  * `/etc/php/8.2/apache2/php.ini`




Часто меняют:
    
    
    memory_limit = 256M
    upload_max_filesize = 50M
    post_max_size = 50M
    max_execution_time = 60
    

После изменений перезагрузите Apache:
    
    
    sudo systemctl reload apache2
    

### 

### Пер‑сайтные настройки

С `libapache2-mod-php` тонкие лимиты на сайт обычно задают через `.htaccess` или `<Directory>`/`<VirtualHost>` (директивы `php_value`, `php_flag`), либо через отдельные `php.ini` и `PHPINIDir` при необходимости.

## Проверка работы

### CLI
    
    
    php -v
    php8.4 -v
    php8.3 -v
    php8.2 -v
    

### 

### Через Apache (mod_php)
    
    
    echo '<?php phpinfo(); ?>' | sudo tee /var/www/app/public/info.php >/dev/null
    curl -s http://app.example/info.php | head
    

Страница должна показывать активную версию PHP, соответствующую **включённому модулю** `phpX.Y`.

## Обновления и приоритеты

  * Обновляйте пакеты регулярно:
        
        
        sudo apt update && sudo apt upgrade
        

  * Если хотите, чтобы пакеты PHP **предпочитались** из Sury, настройте `APT Pinning`:
        
        
        sudo tee /etc/apt/preferences.d/99-sury <<'EOF'
        Package: *
        Pin: origin packages.sury.org
        Pin-Priority: 700
        EOF
        

Проверьте приоритеты: `apt-cache policy php8.4`.




## Безопасность и эксплуатация

  * Оставляйте активным **только один** модуль PHP: лишние версии держите установленными, но выключенными (`a2dismod`).

  * Минимизируйте набор расширений: ставьте модули только для используемой версии.

  * Следите за `open_basedir`, `disable_functions` и правами на файлы/каталоги.

  * Удаляйте `info.php` после проверки.

  * Для проектов, требующих **разных версий одновременно** , рассмотрите изоляцию по vhost’ам на **разных Apache-инстансах** , контейнерах или переход на FPM.




## 

## Устранение неполадок

  * **PHP не обрабатывается (скачивается файл):** модуль не активен. Проверьте `apache2ctl -M | grep php` и включите нужный `a2enmod phpX.Y`.

  * **Не та версия в вебе:** отключите старый модуль `a2dismod php*`, включите нужный `a2enmod phpX.Y`, затем `systemctl reload apache2`.

  * **CLI показывает другую версию:** переключите через `update-alternatives --config php`.

  * **Конфликты директив:** проверьте `.htaccess` и `<Directory>`. Для критичных настроек используйте виртуальные хосты.

  * **Модули «не видны»:** ставьте расширение именно для используемой ветки (`php8.3-xml` ≠ `php-xml`).




## Чек‑лист запуска в продакшн

  * В репозиториях подключён **Sury для trixie** (правильное кодовое имя).

  * Установлены требуемые версии PHP и соответствующие **libapache2-mod-phpX.Y**.

  * Активен **ровно один** модуль PHP в Apache (`a2enmod phpX.Y`), ненужные отключены (`a2dismod`).

  * Виртуальные хосты развернуты, `AllowOverride`/`Rewrite` настроены.

  * Страницы `phpinfo()` проверены и удалены.

  * Логи и мониторинг Apache/модулей включены.




## Итоги

Репозиторий **Sury** на Debian 13 (trixie) позволяет держать **несколько версий PHP** параллельно и быстро переключаться между ними в **CLI** и на уровне **Apache через libapache2-mod-php** (без использования PHP‑FPM).

> **Помните об ограничении** : Apache может загружать **только один** модуль PHP одновременно. Для сценариев, где проекты требуют разные версии одновременно на одном хосте, используйте изоляцию (отдельные инстансы/контейнеры) — либо переходите на FPM.

Похожие статьи

[Создание сервера Minecraft Bedrock](https://zomro.com/rus/blog/faq/330-creating-minecraft-bedrock-server) [Настройка firewall UFW в Ubuntu 20.04](https://zomro.com/rus/blog/faq/343-ufw-firewall-setup-on-ubuntu-2004) [Подключение к Windows‑серверу по RDP (Remote Desktop)](https://zomro.com/rus/blog/faq/685-connecting-to-a-windows-server-via-rdp-remote-desktop) [Текстовый редактор vim](https://zomro.com/rus/blog/faq/204-redaktor-vim) [Установка Docker Engine и Docker Compose на Ubuntu 24.04](https://zomro.com/rus/blog/faq/661-installing-docker-engine-and-docker-compose-on-ubuntu-2404)

[ Выделенные серверы от €88.80/мес ](/rus/dedicated-servers)
