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_php | Apache | Локальная разработка, небольшие сайты | Проще всего, не нужно настраивать FPM | Процессы Apache становятся тяжелее |
| Apache + PHP-FPM | Apache | Сайты среднего размера, лучшее разделение процессов | PHP в отдельных процессах, легче управлять | Нужно отключать mod_php и включать proxy_fcgi |
| Nginx + PHP-FPM | Nginx | Высокая производительность, 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.
Что дальше: