
Практическое руководство для систем семейства RHEL 9/Stream (StreamOS 9, CentOS Stream 9), с двумя путями:
Модульный (Remi module stream) — одна «системная» версия PHP за раз (простая замена по всей системе);
Параллельный (Remi Software Collections) — несколько версий одновременно (php84, php83, php82, php81, php80, php74) с отдельными путями/сервисами.
Мы включим репозитории EPEL и Remi, установим требуемые версии, добавим популярные расширения, покажем проверку и типовые команды для php-fpm.
Предпосылки и поддержка
StreamOS 9 относится к семейству RHEL 9 (той же линии, что CentOS Stream 9/Alma/Rocky), поэтому работают те же репозитории и команды dnf. Для новых веток PHP используем Remi (мейнтейнер PHP для EL).
Обновление системы и включение репозиториев
sudo dnf -y update
# EPEL
sudo dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
# Remi repo для EL9/Stream
sudo dnf -y install https://rpms.remirepo.net/enterprise/remi-release-9.rpm
Полезно проверить доступные модули PHP:
sudo dnf module list php
Справка: PHP 8.4/8.3/… предоставляются Remi как module streams (замена системной версии) и как параллельные коллекции
php84,php83,php74(ставятся рядом и не конфликтуют).
Модульный (одна «системная» версия PHP)
Подходит, если нужна одна версия PHP по всей системе.
Сбросить «старый» модуль и включить нужную ветку
sudo dnf -y module reset php
sudo dnf -y module enable php:remi-8.4 # пример: сделать системной PHP 8.4
Установка PHP и популярных расширений
sudo dnf -y install php php-fpm php-mysqlnd php-xml php-gd php-mbstring php-curl php-zip
php -v
Сервисы PHP‑FPM (модульный путь)
sudo systemctl enable --now php-fpm
systemctl --no-pager status php-fpm
Примечание. Модульный путь прост, но одновременно держит только одну системную ветку.
Параллельные версии (Software Collections из Remi)
Подходит, если нужно несколько версий PHP одновременно (напр., 8.4 и 7.4 параллельно).
Установка параллельных веток
Пакеты коллекций имеют вид:
php84-php,php83-php,php82-php,php81-php,php80-php,php74-phpи соответствующие-php-fpm,-php-mysqlnd, и т.д.
# Примеры: ставим 8.4, 8.3 и 7.4 параллельно
sudo dnf -y install \
php84-php php84-php-fpm php84-php-mysqlnd php84-php-xml php84-php-gd php84-php-mbstring php84-php-curl php84-php-zip \
php83-php php83-php-fpm php83-php-mysqlnd php83-php-xml php83-php-gd php83-php-mbstring php83-php-curl php83-php-zip \
php74-php php74-php-fpm php74-php-mysqlnd php74-php-xml php74-php-gd php74-php-mbstring php74-php-curl php74-php-zip
Где лежат бинарники и конфиги коллекций:
Бинарники:
/opt/remi/php84/root/usr/bin/php,/opt/remi/php83/root/usr/bin/php,/opt/remi/php74/root/usr/bin/phpКонфиги:
/etc/opt/remi/php84/,/etc/opt/remi/php83/,/etc/opt/remi/php74/
Проверка версий (параллельные бинарники):
/opt/remi/php84/root/usr/bin/php -v
/opt/remi/php83/root/usr/bin/php -v
/opt/remi/php74/root/usr/bin/php -v
FPM‑сервисы для коллекций
Каждая ветка идёт со своим сервисом PHP‑FPM:
sudo systemctl enable --now php84-php-fpm php83-php-fpm php74-php-fpm
systemctl --no-pager status php84-php-fpm
Сокеты по умолчанию (коллекции):
/var/opt/remi/php84/run/php-fpm/www.sock/var/opt/remi/php83/run/php-fpm/www.sock/var/opt/remi/php74/run/php-fpm/www.sock
Переключение CLI по умолчанию (не влияет на FPM)
В модульном варианте системная php — это активная ветка модуля. В параллельном — используйте явные пути (/opt/remi/phpXY/root/usr/bin/php) или настройте alias/update-alternatives (на свой риск).
Проверка активной CLI:
php -v
Популярные расширения и поиск пакетов
Ищем расширения:
sudo dnf search php84-php- # для коллекции 8.4
sudo dnf search php # для модульной системной ветки
Примеры установки:
sudo dnf -y install php84-php-pecl-redis php84-php-intl
sudo dnf -y install php-pecl-redis php-intl # для модульной ветки
Проверка и тестовая страница
# CLI
php -v # модульная ветка
/opt/remi/php84/root/usr/bin/php -m | head
# Веб
echo '<?php phpinfo(); ?>' | sudo tee /var/www/html/info.php >/dev/null
# проверьте vhost/server_block привязан к нужному сокету → откройте http://<host>/info.php
# после проверки удалите info.php
Частые вопросы
Можно ли сразу 8.4 и 7.4? Да — через коллекции (
php84-php-*иphp74-php-*) в разных FPM‑сокетах.Нужно ли EPEL? Да, Remi зависит от EPEL на EL9.
Можно ли сменить «системную» ветку без коллекций? Да — через модуль
php:remi-8.4/remi-8.3(одна версия за раз).
Заключение
Для систем семейства RHEL 9/Stream есть два надёжных сценария установки PHP:
Модульный подход (Remi module stream) — простой и предсказуемый вариант, когда требуется одна системная версия PHP для всего сервера. Подходит для типовых сред и минимизирует вариативность.
Параллельные коллекции Remi (
php84-php,php83-php,php74-php) — когда нужно держать несколько версий одновременно и назначать их отдельным сайтам/приложениям через собственные FPM-сокеты. Это гибко и удобно для миграций и совместимости.
В обоих случаях базовые шаги одинаковы: обновить систему, подключить EPEL и Remi, установить нужные пакеты, выполнить проверку (
php -v,phpinfo()), а затем привязать веб-сайты к соответствующим FPM-сокетам (Apacheproxy_fcgiили Nginxfastcgi_pass).
При выборе стратегии ориентируйтесь на требования проектов и операционные риски: модульный путь проще обслуживать, а коллекции дают максимальную изоляцию. Не забывайте об основах безопасности (минимальный набор модулей, актуальные ветки, удаление info.php после теста) и о стандартах эксплуатации (мониторинг сервисов, логирование, регулярные обновления). Такой подход позволит развернуть PHP 8.4–7.4 на StreamOS 9 стабильно, прозрачно и без лишних сюрпризов.