PHP — широко используемый скриптовый язык для веб-разработки. На нём работают системы управления контентом (CMS) вроде WordPress, платформы электронной коммерции, такие как Magento, и фреймворки, включая Laravel. Rocky Linux предоставляет PHP через репозиторий AppStream, предлагая несколько версий с помощью системы модулей DNF.
💡 Если вы разворачиваете веб-приложение (WordPress, Laravel, 1C-Битрикс) или любой другой PHP-сайт — это руководство поможет установить нужную версию PHP с необходимыми расширениями под Apache или Nginx.
В этом руководстве мы рассмотрим установку PHP на Rocky Linux 8, 9 и 10. Вы узнаете:
- Какую версию PHP выбрать в зависимости от вашей Rocky Linux
- Как установить PHP для Apache или Nginx (с PHP-FPM)
- Как добавить популярные расширения (базы данных, кэширование, обработка изображений)
- Как переключать версии PHP (для Rocky 8/9)
- Как настроить PHP-FPM для работы с Nginx
Для кого: новички (кто впервые настраивает PHP-сайт), веб-разработчики (для локального окружения или продакшена), сисадмины (для настройки корпоративных порталов).
1. Доступные версии PHP по версиям Rocky Linux
Rocky Linux предоставляет разные версии PHP в зависимости от вашего релиза. Следующая таблица показывает, что доступно через стандартный репозиторий AppStream:
| Версия Rocky | Доступные версии PHP | Способ установки | PHP по умолчанию |
|---|---|---|---|
| Rocky Linux 10 | 8.3 | Прямая установка через DNF | 8.3 |
| Rocky Linux 9 | 8.1, 8.2, 8.3 | Модули DNF (module streams) | Нет (нужно включить) |
| Rocky Linux 8 | 7.2, 7.3, 7.4, 8.0, 8.2 | Модули DNF (module streams) | 7.2 |
💡 Вывод для новичка: Для большинства пользователей выбирайте самую новую версию PHP, доступную для вашего Rocky Linux. На версии 10 вы автоматически получаете PHP 8.3. Если у вас Rocky 9 — включите PHP 8.3 для новейших функций и обновлений безопасности. Для Rocky 8 самая новая доступная версия — PHP 8.2 (PHP 8.3 требует обновления до Rocky 9 или 10).
⚠️ Важно: PHP 7.2 на Rocky 8 (по умолчанию) достиг конца жизни (End-of-Life) и не получает обновлений безопасности. Для продакшена обязательно включите PHP 8.2 или выше.
2. Подготовка системы
2.1 Обновление системы
sudo dnf upgrade --refresh -y
Что делает:
sudo— права суперпользователя.dnf upgrade— обновляет все пакеты до последних версий.--refresh— принудительно перекачивает метаданные репозиториев (игнорирует кэш).-y— автоматически отвечает «yes».
Зачем: Это стандартная практика безопасности перед установкой нового ПО. Снижает риск конфликтов зависимостей.
3. Установка PHP на Rocky Linux 10
Поскольку Rocky Linux 10 отказался от модульной системы, установка PHP проста. PHP 8.3 доступен напрямую из репозитория AppStream без необходимости включать какие-либо модули.
3.1 Установка PHP для Apache
Если вы планируете использовать PHP с веб-сервером Apache:
sudo dnf install -y php php-cli
Что делает: Устанавливает PHP, настроенный для работы с модулем mod_php Apache. Apache обрабатывает PHP-файлы непосредственно в своём процессе.
Зачем: Apache с mod_php — классическая связка, простая в настройке. Подходит для большинства проектов.
3.2 Установка PHP для Nginx
Nginx требует PHP-FPM (FastCGI Process Manager), так как Nginx не может обрабатывать PHP напрямую:
sudo dnf install -y php-fpm php-cli
Что делает: Устанавливает PHP-FPM (отдельный сервис) и интерфейс командной строки PHP.
Зачем: PHP-FPM работает как отдельный сервис, с которым Nginx общается через Unix-сокет. Эта архитектура обеспечивает лучшую производительность под высокой нагрузкой по сравнению с mod_php.
3.3 Проверка установки
php -v
✅ Ожидаемый вывод в терминале (пример):
PHP 8.3.26 (cli) (built: Sep 23 2025 17:57:26) (NTS gcc x86_64)
Copyright (c) The PHP Group
Zend Engine v4.3.26, Copyright (c) Zend Technologies
with Zend OPcache v8.3.26, Copyright (c), by Zend Technologies
Зачем: Убедиться, что PHP установился корректно. Вывод подтверждает версию PHP и наличие встроенного OPcache для ускорения производительности.
4. Установка PHP на Rocky Linux 9
Rocky Linux 9 использует систему модулей DNF для предоставления нескольких версий PHP. Перед установкой необходимо включить модуль (stream) для вашей желаемой версии.
4.1 Список доступных версий PHP
dnf module list php
✅ Ожидаемый вывод в терминале:
Rocky Linux 9 - AppStream
Name Stream Profiles Summary
php 8.1 common [d], devel, minimal PHP scripting language
php 8.2 common [d], devel, minimal PHP scripting language
php 8.3 common [d], devel, minimal PHP scripting language
Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
Зачем: Узнать, какие версии PHP доступны в репозитории. Rocky Linux 9 предоставляет PHP 8.1, 8.2 и 8.3. По умолчанию ни один модуль не включён — его нужно явно активировать перед установкой.
4.2 Включение желаемой версии PHP
Для новейших функций и обновлений безопасности включите PHP 8.3:
sudo dnf module enable php:8.3 -y
Альтернатива — если вашему приложению нужна конкретная версия:
# Для PHP 8.2
sudo dnf module enable php:8.2 -y
# Для PHP 8.1
sudo dnf module enable php:8.1 -y
Что делает: Активирует модуль PHP указанной версии, делая пакеты доступными для установки.
4.3 Установка PHP
Для Apache:
sudo dnf install -y php php-cli
Для Nginx (с PHP-FPM):
sudo dnf install -y php-fpm php-cli
4.4 Проверка установки
php -v
✅ Ожидаемый вывод в терминале (пример для PHP 8.3):
PHP 8.3.26 (cli) (built: Sep 23 2025 17:57:26) (NTS gcc x86_64)
...
5. Установка PHP на Rocky Linux 8
Rocky Linux 8 также использует систему модулей DNF, но с другим набором доступных версий PHP. Модуль по умолчанию — PHP 7.2, который достиг конца жизни. Для продакшена включите более новую версию.
5.1 Список доступных версий PHP
dnf module list php
✅ Ожидаемый вывод в терминале:
Rocky Linux 8 - AppStream
Name Stream Profiles Summary
php 7.2 [d] common [d], devel, minimal PHP scripting language
php 7.3 common [d], devel, minimal PHP scripting language
php 7.4 common [d], devel, minimal PHP scripting language
php 8.0 common [d], devel, minimal PHP scripting language
php 8.2 common [d], devel, minimal PHP scripting language
Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
Зачем: Узнать доступные версии. PHP 8.3 недоступен на Rocky Linux 8 через стандартные репозитории. Если вам нужен PHP 8.3 — обновитесь до Rocky Linux 9 или 10.
5.2 Включение PHP 8.2 (рекомендуемая версия)
sudo dnf module enable php:8.2 -y
Что делает: Активирует модуль PHP 8.2 — самую новую версию, доступную на Rocky 8.
5.3 Установка PHP
Для Apache:
sudo dnf install -y php php-cli
Для Nginx (с PHP-FPM):
sudo dnf install -y php-fpm php-cli
5.4 Проверка установки
php -v
✅ Ожидаемый вывод в терминале (пример):
PHP 8.2.28 (cli) (built: Mar 11 2025 17:58:12) (NTS gcc x86_64)
...
6. Установка расширений PHP
Базовая установка PHP уже включает необходимые модули: cURL, JSON, OpenSSL, XML. Однако большинство веб-приложений требуют дополнительные расширения для подключения к базам данных, обработки изображений и кэширования.
6.1 Популярные расширения для веб-приложений
Следующая команда устанавливает часто используемые расширения для WordPress, Laravel и аналогичных приложений:
sudo dnf install -y php-gd php-intl php-bcmath php-soap php-ldap php-mysqlnd php-pgsql php-pecl-apcu php-pecl-zip php-mbstring php-pdo php-xml
Что делает каждое расширение:
| Расширение | Для чего нужно |
|---|---|
php-gd | Обработка изображений (миниатюры, водяные знаки, капчи) |
php-intl | Интернационализация (поддержка многоязычных приложений) |
php-bcmath | Математика произвольной точности (финансовые расчёты) |
php-soap | Поддержка SOAP-протокола (веб-сервисы) |
php-ldap | Подключение к LDAP-каталогам (Active Directory) |
php-mysqlnd | Нативный драйвер MySQL/MariaDB |
php-pgsql | Подключение к PostgreSQL |
php-pecl-apcu | Кэширование пользовательских объектов (ускорение) |
php-pecl-zip | Создание и распаковка ZIP-архивов |
php-mbstring | Работа с многобайтовыми строками (UTF-8) |
php-pdo | Абстракция баз данных (универсальный доступ) |
php-xml | Парсинг XML и манипуляции DOM |
6.2 Расширение Redis для кэширования
Если вы используете Redis для хранения сессий или кэширования объектов, установите расширение Redis. Этот пакет доступен на Rocky Linux 9 и 10, но не входит в стандартные репозитории Rocky Linux 8:
# Для Rocky Linux 9 и 10
sudo dnf install -y php-pecl-redis6
6.3 Просмотр загруженных модулей
После установки расширений проверьте, какие модули загружены:
php -m
Для фильтрации конкретных модулей (например, MySQL):
php -m | grep -i mysql
✅ Ожидаемый вывод:
mysqli
mysqlnd
pdo_mysql
6.4 Инструменты разработчика PHP (опционально)
Для разработки расширений PHP или отладки установите пакет разработки и Xdebug:
sudo dnf install -y php-devel php-pecl-xdebug3
⚠️ Важно: Эти пакеты предназначены только для сред разработки. Не устанавливайте Xdebug на продакшен-серверы — он значительно снижает производительность.
7. Настройка PHP-FPM для Nginx
Если вы установили PHP-FPM для работы с Nginx, необходимо изменить конфигурацию пула. По умолчанию PHP-FPM работает от пользователя Apache, что несовместимо с Nginx.
7.1 Редактирование конфигурации пула PHP-FPM
sudo nano /etc/php-fpm.d/www.conf
Найдите строки с user и group в начале файла:
user = apache
group = apache
Измените их на nginx:
user = nginx
group = nginx
Что делает: Указывает PHP-FPM, от какого пользователя и группы запускать процессы обработки PHP.
Зачем: Nginx работает от пользователя nginx, и PHP-FPM должен иметь доступ к тем же файлам (например, к сокету). Без этой правки Nginx не сможет общаться с PHP-FPM.
Сохранение файла: Ctrl+O, затем Enter, выход — Ctrl+X.
7.2 Запуск и включение автозагрузки PHP-FPM
sudo systemctl start php-fpm
sudo systemctl enable php-fpm
Что делает:
start— запускает сервис PHP-FPM прямо сейчас.enable— добавляет PHP-FPM в автозагрузку (будет стартовать при загрузке системы).
7.3 Проверка статуса PHP-FPM
sudo systemctl status php-fpm
✅ Ожидаемый вывод (пример):
● php-fpm.service - The PHP FastCGI Process Manager
Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; enabled; preset: disabled)
Active: active (running) since Sat 2026-01-10 05:10:00 UTC; 5s ago
Main PID: 1234 (php-fpm)
Status: "Ready to handle connections"
Tasks: 6 (limit: 23567)
Memory: 12.5M
CPU: 45ms
CGroup: /system.slice/php-fpm.service
├─1234 "php-fpm: master process (/etc/php-fpm.conf)"
└─1235 "php-fpm: pool www"
Признаки успеха:
Active: active (running)— сервис работаетenabledв строкеLoaded— автозагрузка настроена
7.4 Настройка Nginx для обработки PHP
Добавьте следующий блок location в конфигурацию вашего сервера Nginx (обычно в /etc/nginx/conf.d/ваш_сайт.conf или /etc/nginx/nginx.conf):
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
Что делает этот блок: Передаёт все запросы к .php-файлам в PHP-FPM через Unix-сокет.
Проверка конфигурации Nginx:
sudo nginx -t
✅ Успешный вывод:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Перезагрузка Nginx:
sudo systemctl reload nginx
8. Переключение версий PHP (для Rocky 8 и 9)
На Rocky Linux 8 и 9 вы можете переключаться между версиями PHP, сбросив модуль и включив другой. Это полезно при обновлении приложения или тестировании совместимости.
8.1 Сброс и переключение модуля
Удалите текущие пакеты PHP:
sudo dnf remove -y php php-cli php-fpm php-common
Сбросьте модуль PHP:
sudo dnf module reset php
Что делает: Отключает текущий модуль PHP и очищает его настройки.
Включите новую версию (например, PHP 8.3):
sudo dnf module enable php:8.3 -y
Установите PHP заново:
sudo dnf install -y php php-cli php-fpm php-common
Проверьте новую версию:
php -v
9. Удаление PHP
9.1 Удаление пакетов PHP
sudo dnf remove -y php php-cli php-fpm php-common
Что делает: Удаляет основные пакеты PHP.
9.2 Удаление неиспользуемых зависимостей
sudo dnf autoremove -y
Что делает: Удаляет пакеты, которые были установлены как зависимости, но больше не нужны.
9.3 Сброс модуля PHP (для Rocky 8 и 9)
sudo dnf module reset php
Зачем: Удаляет привязку к модулю PHP, очищая состояние. На Rocky 10 этот шаг не нужен — там нет модульной системы.
10. Диагностика проблем
10.1 Конфликты модулей (module stream conflicts)
Ошибка: При попытке установки PHP возникает конфликт модулей.
Решение:
sudo dnf module reset php
sudo dnf module enable php:8.3 -y
10.2 PHP-FPM не запускается
Проверка синтаксиса конфигурации:
php-fpm -t
Просмотр логов systemd:
journalctl -xeu php-fpm
Частые причины: проблемы с правами на сокет или синтаксические ошибки в файлах конфигурации пула (/etc/php-fpm.d/www.conf).
10.3 Отсутствуют расширения
Если приложение сообщает о пропущенном расширении — найдите имя пакета:
dnf search php- | grep -i "название_расширения"
Зачем: Некоторые расширения используют префикс php-pecl-. Например, расширение Redis на Rocky 9/10 — php-pecl-redis6.
Чек-лист: всё готово к работе
# 1. Проверка версии PHP
php -v
# 2. Проверка загруженных модулей
php -m | grep -E "mysql|pdo|gd|mbstring"
# 3. Проверка статуса PHP-FPM (если используете Nginx)
sudo systemctl status php-fpm
# 4. Проверка обработки PHP через веб-сервер
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php
# Затем откройте в браузере http://ваш-сервер/info.php
# 5. Проверка подключения к базе данных (если настроена)
php -r "new PDO('mysql:host=localhost;dbname=test', 'user', 'pass');" 2>/dev/null && echo "✅ PDO MySQL работает"
⚠️ После проверки удалите info.php с сервера! Он раскрывает конфиденциальную информацию о системе.
Заключение
Вы установили PHP на Rocky Linux, используя стандартные репозитории AppStream.
Что теперь есть в системе:
- ✅ PHP выбранной версии (8.3 на Rocky 10, 8.3/8.2/8.1 на Rocky 9, 8.2 на Rocky 8)
- ✅ Набор расширений для баз данных, обработки изображений и кэширования
- ✅ PHP-FPM, настроенный для работы с Nginx (или
mod_phpдля Apache) - ✅ Возможность переключать версии PHP (на Rocky 8/9)
Что дальше:
- Настройте виртуальный хост в Nginx/Apache для вашего PHP-приложения
- Установите WordPress, Laravel или другой PHP-фреймворк
- Настройте Redis или Memcached для кэширования
- Для повышения безопасности настройте
open_basedirи отключите опасные функции PHP