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

PHP — это язык серверного программирования, который используется для создания динамических веб-сайтов. Большинство CMS (WordPress, Drupal, Joomla) и фреймворков (Laravel, Symfony) написаны на PHP. В Debian PHP можно установить несколькими способами в зависимости от веб-сервера. Главные сложности для новичка: нужно выбрать правильный метод (Apache mod_php, Apache + PHP-FPM или Nginx + PHP-FPM), не перепутать версии PHP (на Debian 13 — PHP 8.4, на Debian 12 — PHP 8.2, на Debian 11 — PHP 7.4). Также для Apache с PHP-FPM важно отключить mod_php и включить модуль proxy_fcgi.

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

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

  • Как установить PHP с Apache (mod_php) — самый простой способ
  • Как установить PHP с Apache и PHP-FPM (отдельный пул процессов)
  • Как установить PHP с Nginx и PHP-FPM (рекомендовано для LEMP)
  • Как установить популярные расширения (MySQL, GD, cURL, mbstring, XML и др.)
  • Как решить типичные проблемы: socket не найден, модуль php не загружается, ошибка 502 Bad Gateway

Для кого: администраторы веб-серверов, разработчики, а также все, кто хочет запускать PHP-сайты на Debian 11, 12 или 13.

Оглавление

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

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

  • У вас установлена Debian 11, 12 или 13
  • Подключение к интернету стабильно
  • У вас есть права sudo
  • Установлен веб-сервер (Apache или Nginx). Если нет — установите его по нашему руководству или руководству по Apache

⚠️ ВАЖНО: Проверьте права 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 — обновляет все установленные пакеты до последних версий

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

2. 📊 Сравнение способов установки PHP

В Debian есть три основных способа установки PHP в связке с веб-сервером. Вот их сравнение:

МетодВеб-серверДля когоПлюсыМинусы
Apache mod_phpApacheЛокальная
разработка,
небольшие сайты
Проще всего,
не нужно
настраивать FPM
Процессы Apache
становятся
тяжелее
Apache + PHP-FPMApacheСайты среднего
размера, лучшее
разделение
процессов
PHP в отдельных
процессах, легче
управлять
Нужно отключать
mod_php и
включать
proxy_fcgi
Nginx + PHP-FPMNginxВысокая
производительность,
LEMP-стек
PHP-FPM
по умолчанию,
очень
производительно
Nginx не
поддерживает
mod_php

💡 Рекомендация: Для начинающих проще всего Apache mod_php. Для production-серверов лучше использовать PHP-FPM (с Apache или Nginx).

3. 📦 Какие версии PHP в разных Debian

Версия DebianВерсия PHP по умолчанию
Debian 13 (Trixie)PHP 8.4
Debian 12 (Bookworm)PHP 8.2
Debian 11 (Bullseye)PHP 7.4

⚠️ Важно: PHP 7.4 — устаревшая версия (End of Life), но Debian 11 продолжает выпускать обновления безопасности до августа 2026 года. Новые проекты лучше разворачивать на Debian 12 или 13.

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

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

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

sudo apt install php libapache2-mod-php -y

Что делает: Устанавливает PHP и модуль Apache для работы с PHP.

4.2 Перезапуск Apache

sudo systemctl restart apache2

4.3 Проверка версии PHP

php --version

Ожидаемый вывод в терминале (Debian 13):

PHP 8.4.x (cli) (built: ...)

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

sudo apache2ctl -M | grep php_module

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

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

Этот способ подходит для сайтов, где нужно лучшее разделение процессов (PHP работает в отдельных процессах, не нагружая Apache).

5.1 Установка PHP-FPM и модуля fcgi для Apache

sudo apt install php-fpm libapache2-mod-fcgid -y

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

Для Debian 13:

sudo a2dismod php8.4

Для Debian 12:

sudo a2dismod php8.2

Для Debian 11:

sudo a2dismod php7.4

5.3 Включение модулей proxy_fcgi и конфигурации PHP-FPM

Для Debian 13:

sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php8.4-fpm

Для Debian 12:

sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php8.2-fpm

Для Debian 11:

sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php7.4-fpm

5.4 Запуск PHP-FPM и перезапуск Apache

Для Debian 13:

sudo systemctl enable --now php8.4-fpm
sudo systemctl restart apache2

Для Debian 12:

sudo systemctl enable --now php8.2-fpm
sudo systemctl restart apache2

Для Debian 11:

sudo systemctl enable --now php7.4-fpm
sudo systemctl restart apache2

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

systemctl status php8.2-fpm --no-pager

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

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

Nginx не поддерживает mod_php, поэтому всегда используется PHP-FPM.

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

sudo apt install php php-fpm php-cli -y

6.2 Запуск PHP-FPM

Для Debian 13:

sudo systemctl enable --now php8.4-fpm

Для Debian 12:

sudo systemctl enable --now php8.2-fpm

Для Debian 11:

sudo systemctl enable --now php7.4-fpm

6.3 Настройка Nginx для работы с PHP-FPM

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

Для Debian 13:

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

Для Debian 12:

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

Для Debian 11:

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

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

sudo nginx -t
sudo systemctl reload nginx

7. 📦 Установка популярных расширений PHP

Большинству приложений (WordPress, Laravel, Symfony) нужны дополнительные расширения.

7.1 Для Debian 13 (PHP 8.4)

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

7.2 Для Debian 12 (PHP 8.2)

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

7.3 Для Debian 11 (PHP 7.4)

sudo apt install php7.4-curl php7.4-mysql php7.4-gd php7.4-opcache php7.4-zip php7.4-intl php7.4-bcmath php7.4-mbstring php7.4-xml php-memcached php-redis -y

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

sudo systemctl restart php8.2-fpm   # или php8.4-fpm / php7.4-fpm

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

php -m

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

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

Симптом: Nginx возвращает ошибку 502 Bad Gateway при попытке открыть PHP-файл.

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

Пошаговое решение:

Шаг 1: Проверьте статус PHP-FPM:

sudo systemctl status php8.2-fpm

Шаг 2: Проверьте, существует ли socket:

ls -l /run/php/php8.2-fpm.sock

Шаг 3: Если socket отсутствует — перезапустите PHP-FPM:

sudo systemctl restart php8.2-fpm

8.2 Ошибка: Module php does not exist (Apache)

Симптом: sudo a2enmod php выдаёт Module php does not exist.

Причина: В Debian модуль Apache для PHP имеет версионное имя (php8.4, php8.2 или php7.4).

Решение: Включите версионный модуль:

Для Debian 13: sudo a2enmod php8.4
Для Debian 12: sudo a2enmod php8.2
Для Debian 11: sudo a2enmod php7.4

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

Симптом: php -m не показывает, например, curl, хотя пакет установлен.

Пошаговое решение:

Шаг 1: Проверьте, установлен ли пакет:

dpkg -l | grep php8.2-curl

Шаг 2: Перезапустите PHP-FPM (или Apache для mod_php):

sudo systemctl restart php8.2-fpm

Шаг 3: Проверьте снова:

php -m | grep curl

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

Удаление всех пакетов PHP для вашей версии

Для Debian 13:

sudo apt remove --purge "php8.4*" -y
sudo apt autoremove -y

Для Debian 12:

sudo apt remove --purge "php8.2*" -y
sudo apt autoremove -y

Для Debian 11:

sudo apt remove --purge "php7.4*" -y
sudo apt autoremove -y

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

php --version

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

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

  • [ ] Система обновлена (sudo apt update && sudo apt upgrade -y)
  • [ ] Выбран и выполнен один из способов установки (mod_php / Apache-FPM / Nginx-FPM)
  • [ ] php --version показывает ожидаемую версию
  • [ ] Веб-сервер перезапущен и обрабатывает PHP-файлы
  • [ ] Установлены необходимые расширения (MySQL, GD, cURL, mbstring, XML)
  • [ ] php -m показывает нужные расширения

Заключение

Вы установили PHP на Debian. Если вы выбрали Apache mod_php — получили самый простой способ для разработки. Если выбрали Apache + PHP-FPM — получили лучшее разделение процессов. Если выбрали Nginx + PHP-FPM — получили высокопроизводительную связку. Главное, что нужно запомнить: версия PHP зависит от версии Debian (8.4 на Debian 13, 8.2 на Debian 12, 7.4 на Debian 11). Для production-серверов используйте PHP-FPM, а не mod_php.

Что дальше:

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