opened image

StreamOS 9: как установить PHP 8.*-7.*

 

Практическое руководство для систем семейства RHEL 9/Stream (StreamOS 9, CentOS Stream 9), с двумя путями:

  1. Модульный (Remi module stream) — одна «системная» версия PHP за раз (простая замена по всей системе);

  2. Параллельный (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-сокетам (Apache proxy_fcgi или Nginx fastcgi_pass).

 

При выборе стратегии ориентируйтесь на требования проектов и операционные риски: модульный путь проще обслуживать, а коллекции дают максимальную изоляцию. Не забывайте об основах безопасности (минимальный набор модулей, актуальные ветки, удаление info.php после теста) и о стандартах эксплуатации (мониторинг сервисов, логирование, регулярные обновления). Такой подход позволит развернуть PHP 8.4–7.4 на StreamOS 9 стабильно, прозрачно и без лишних сюрпризов.