CentOS Stream’s default repositories do not always carry the PHP, Redis, or Memcached branch a web application expects. The Remi RPM repository fills that gap with Enterprise Linux packages for current PHP branches and selected cache servers, while DNF still manages installation, updates, and removal.
To install Remi RPM on CentOS Stream, enable CRB, add EPEL from Fedora’s official release-package permalinks, and install the Remi release RPM that matches CentOS Stream 10 or 9. The PHP steps use DNF4 module commands because both supported CentOS Stream releases still use DNF4 for this workflow.
These steps support CentOS Stream 10 and CentOS Stream 9. Commands work the same on both releases unless a Stream-specific EPEL or Remi release package command is shown.
Install the Remi RPM Repository on CentOS Stream
Refresh CentOS Stream Packages
Refresh repository metadata and apply pending system updates before adding third-party repositories. Review the DNF transaction before confirming because a full upgrade can update core system packages:
sudo dnf upgrade --refresh
These commands use
sudofor system-wide package and repository changes. If your account cannot usesudo, switch to the root account for the installation commands.
Install the DNF Config Manager Plugin
Minimal CentOS Stream installations may not include the dnf config-manager helper. Install dnf-plugins-core before enabling CRB:
sudo dnf install dnf-plugins-core
Enable CRB for Remi Dependencies
Remi and EPEL packages often depend on libraries from CRB (CodeReady Builder). Enable CRB before installing EPEL:
sudo dnf config-manager --set-enabled crb
Confirm CRB is enabled:
dnf repolist --enabled | grep -E '^crb[[:space:]]'
crb CentOS Stream 10 - CRB
CentOS Stream 9 prints the same repository ID with CentOS Stream 9 - CRB as the repository name. The /usr/bin/crb helper is installed by epel-release, so it is not the prerequisite command for this stage.
Install EPEL for CentOS Stream
Install EPEL from the official Fedora EPEL release-package permalinks. The separate CentOS Stream EPEL setup guide covers EPEL in more detail, and Fedora’s EPEL getting started page is the source for the current release RPM URLs.
For CentOS Stream 10, install the EPEL 10 release package:
sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-10.noarch.rpm
For CentOS Stream 9, install both EPEL and EPEL Next:
sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm https://dl.fedoraproject.org/pub/epel/epel-next-release-latest-9.noarch.rpm
EPEL Next is a CentOS Stream 9-only repository. Do not add an EPEL Next command to CentOS Stream 10 unless Fedora publishes a Stream 10 EPEL Next release package in the future.
Install the Remi Release RPM
Install the Remi auto-configuration package that matches your CentOS Stream major version. Remi lists the current Enterprise Linux release RPMs on its repository home page.
For CentOS Stream 10:
sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-10.rpm
For CentOS Stream 9:
sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm
Verify Remi, EPEL, and CRB Repositories
Check that DNF can see the required repositories. The whitespace-aware grep filter matches normal DNF repository output; the grep command guide explains the same pattern syntax if you need to adapt it.
dnf repolist --enabled | grep -E '^(crb|epel|epel-next|remi-modular|remi-safe)[[:space:]]'
On CentOS Stream 10, relevant output includes:
crb CentOS Stream 10 - CRB epel Extra Packages for Enterprise Linux 10 - x86_64 remi-modular Remi's Modular repository for Enterprise Linux 10 - x86_64 remi-safe Safe Remi's RPM repository for Enterprise Linux 10 - x86_64
On CentOS Stream 9, the same check should also show epel-next. If remi-modular or remi-safe is missing, reinstall the matching Remi release RPM before continuing.
Install PHP from Remi on CentOS Stream
View Remi PHP Module Streams
List PHP module streams after the Remi repository is enabled:
dnf module list php
On CentOS Stream 10, relevant output includes the Remi streams:
Remi's Modular repository for Enterprise Linux 10 - x86_64 Name Stream Profiles Summary php remi-7.4 common [d], devel, minimal PHP scripting language php remi-8.0 common [d], devel, minimal PHP scripting language php remi-8.1 common [d], devel, minimal PHP scripting language php remi-8.2 common [d], devel, minimal PHP scripting language php remi-8.3 common [d], devel, minimal PHP scripting language php remi-8.4 common [d], devel, minimal PHP scripting language php remi-8.5 common [d], devel, minimal PHP scripting language Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
CentOS Stream 9 also lists AppStream PHP 8.1, 8.2, and 8.3 before the Remi section. That gives Stream 9 users a choice between distribution packages and Remi’s newer or alternate branches.
CentOS Stream 10 prints a modularity deprecation warning during module operations. The warning reflects DNF5’s future direction, but CentOS Stream 10 currently ships DNF4 and still supports the Remi module commands used in this workflow.
Choose a PHP Branch from Remi
Choose the PHP branch your application supports. PHP’s supported versions page is the source for active and security support dates:
| PHP Branch | Status in May 2026 | Best Fit | Security Support Until |
|---|---|---|---|
| PHP 8.2 | Security fixes only | Legacy applications that cannot move to PHP 8.3 or newer yet | December 2026 |
| PHP 8.3 | Security fixes only | Compatibility-first production stacks with tested PHP 8.3 dependencies | December 2027 |
| PHP 8.4 | Active support | Production deployments that need recent PHP features without moving to the newest branch immediately | December 2028 |
| PHP 8.5 | Active support | New projects, development environments, and applications ready for the current PHP branch | December 2029 |
Older Remi streams such as remi-7.4, remi-8.0, and remi-8.1 may still appear for compatibility work, but avoid them for new deployments because upstream PHP no longer supports those branches.
Switch to a Remi PHP Stream
Use dnf module switch-to on CentOS Stream because it handles the common case where another PHP module stream is already enabled. This example installs the PHP 8.4 common profile from Remi:
sudo dnf module switch-to php:remi-8.4/common
Replace 8.4 with another supported stream, such as 8.5 or 8.3, if your application requires that branch. The common profile installs php-cli, php-fpm, php-mbstring, and php-xml on both supported CentOS Stream releases.
Verify PHP and PHP-FPM from Remi
Check the installed PHP version and package source:
php --version
Relevant output should include Remi’s build line. The point release will change as Remi publishes updates:
PHP 8.4.21 (cli) (built: May 5 2026 16:34:12) (NTS gcc x86_64) Copyright (c) The PHP Group Built by Remi's RPM repository <https://rpms.remirepo.net/> #StandWithUkraine Zend Engine v4.4.21, Copyright (c) Zend Technologies
Enable PHP-FPM when the system will serve PHP through a web server:
sudo systemctl enable --now php-fpm
Verify the service state with stable systemd checks:
systemctl is-active php-fpm
systemctl is-enabled php-fpm
active enabled
For extension packages, Apache or Nginx integration, and PHP-FPM pool configuration, use the dedicated PHP setup guide for CentOS Stream after the Remi stream is selected.
Install Redis and Memcached from Remi on CentOS Stream
Remi also publishes Redis and Memcached module streams. CentOS Stream 10’s base repositories use Valkey 7.2 instead of Redis, as noted in the CentOS Stream 10 release notes, so use Remi’s Redis packages only when the application specifically requires Redis instead of a Redis-compatible Valkey service.
Install Memcached from Remi
List the Memcached module stream:
dnf module list memcached
Relevant output includes:
Remi's Modular repository for Enterprise Linux 10 - x86_64 Name Stream Profiles Summary memcached remi common [d] High Performance, Distributed Memory Object Cache Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
Enable the Remi Memcached stream, then install the package:
sudo dnf module enable memcached:remi
sudo dnf install memcached
Confirm the installed version:
memcached -h | head -1
memcached 1.6.41
Enable the Memcached service:
sudo systemctl enable --now memcached
Verify the service state:
systemctl is-active memcached
systemctl is-enabled memcached
active enabled
Install Redis from Remi
List the Redis streams available from Remi:
dnf module list redis
On CentOS Stream 10, relevant output includes these Redis streams:
Remi's Modular repository for Enterprise Linux 10 - x86_64 Name Stream Profiles Summary redis remi-7.2 common [d] Redis persistent key-value database redis remi-8.0 common [d] Redis persistent key-value database redis remi-8.2 common [d] Redis persistent key-value database redis remi-8.4 common [d] Redis persistent key-value database redis remi-8.6 common [d] Redis persistent key-value database Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
Redis Open Source version management currently lists Redis 7.2 as supported through December 1, 2029. Use Redis 7.2 for applications pinned to that long-term branch; choose a newer Remi stream only after checking application and client-library compatibility.
sudo dnf module enable redis:remi-7.2
sudo dnf install redis
Confirm the Redis CLI version:
redis-cli --version
redis-cli 7.2.14
Enable the Redis service:
sudo systemctl enable --now redis
Verify the service state:
systemctl is-active redis
systemctl is-enabled redis
active enabled
CentOS Stream 9 also lists older Redis compatibility streams. Avoid those older streams for new services unless an application vendor explicitly requires them.
Troubleshoot Remi Repository Issues on CentOS Stream
Fix Missing DNF Config Manager
If CRB setup fails with a missing config-manager command, the DNF plugin package is not installed:
No such command: config-manager
Install the plugin package, then enable CRB again:
sudo dnf install dnf-plugins-core
sudo dnf config-manager --set-enabled crb
Fix Missing Remi Repositories
Confirm that the Remi release package is installed:
rpm -q remi-release
remi-release-10.1-3.el10.remi.noarch
If the package is missing or the release number does not match your CentOS Stream major version, reinstall the correct Remi RPM from the install section. Then verify the enabled Remi repositories:
dnf repolist --enabled | grep -E '^remi-(modular|safe)[[:space:]]'
remi-modular Remi's Modular repository for Enterprise Linux 10 - x86_64 remi-safe Safe Remi's RPM repository for Enterprise Linux 10 - x86_64
Fix PHP Module Stream Switch Errors
DNF blocks direct stream changes when another PHP stream is already enabled. The error commonly looks like this:
Error: It is not possible to switch enabled streams of a module unless explicitly enabled via configuration option module_stream_switch. It is recommended to rather remove all installed content from the module, and reset the module using 'dnf module reset <module_name>' command.
Use module switch-to for normal DNF4 PHP changes:
sudo dnf module switch-to php:remi-8.4/common
If the error continues because PHP packages from another stream are already installed, schedule a maintenance window, remove the current PHP packages you no longer need, reset the module, and then switch streams:
sudo dnf remove php php-cli php-fpm php-common php-mbstring php-xml
sudo dnf module reset php
sudo dnf module switch-to php:remi-8.4/common
The same reset-then-enable pattern applies to Redis and Memcached module conflicts, but remove only packages that belong to the stream you intend to replace.
Fix DNF Cache File Errors
If DNF reports a missing file under /var/cache/dnf after a repository refresh or package upgrade, the local cache may point at a package file that no longer exists. The error usually follows this shape:
[Errno 2] No such file or directory: '/var/cache/dnf/[repo-cache]/packages/[package-name].rpm'
Clear the cached package metadata, then rebuild the cache from the enabled repositories:
sudo dnf clean all
sudo dnf makecache --refresh
Rerun the failed DNF install or module command after the cache refresh completes. If the same error returns, check mirror, proxy, or outbound HTTPS access before changing the Remi commands.
Check Remi Release RPM Downloads
Verify your CentOS Stream major version before testing release RPM URLs:
cat /etc/centos-release
CentOS Stream release 10
Use curl to check HTTP headers for the matching Remi release package:
curl -I --fail --silent --show-error https://rpms.remirepo.net/enterprise/remi-release-10.rpm | head -1
HTTP/2 200
Use remi-release-9.rpm on CentOS Stream 9. If the header check fails, fix DNS, proxy, or outbound HTTPS access before rerunning the DNF install command.
Remove Remi from CentOS Stream
Remove Packages Installed from Remi
Stop only the services you installed from the Remi examples. Skip any service command for software that is not present on your system:
sudo systemctl disable --now php-fpm
sudo systemctl disable --now redis
sudo systemctl disable --now memcached
Remove the example packages you no longer need, then reset the module streams:
sudo dnf remove php php-cli php-fpm php-common php-mbstring php-xml redis memcached
sudo dnf module reset php redis memcached
If DNF offers an autoremove cleanup afterward, review the package list before confirming so you do not remove unrelated dependencies from other services.
Remove the Remi Release Package
Remove the Remi release package after packages from Remi are no longer needed:
sudo dnf remove remi-release
Verify the package and repositories are gone:
rpm -q remi-release 2>/dev/null || echo "remi-release is not installed"
dnf repolist --enabled | grep -E '^remi' || echo "Remi repositories are disabled"
remi-release is not installed Remi repositories are disabled
Optionally Remove EPEL
Keep EPEL installed if other packages depend on it. Check installed packages that came from EPEL before removing the EPEL release packages.
For CentOS Stream 10:
dnf repoquery --installed --repo=epel
For CentOS Stream 9:
dnf repoquery --installed --repo=epel --repo=epel-next
If the matching command returns no packages you still need, remove EPEL with the command for your CentOS Stream version.
For CentOS Stream 10:
sudo dnf remove epel-release
For CentOS Stream 9:
sudo dnf remove epel-release epel-next-release
Verify no EPEL repositories remain enabled after removal:
dnf repolist --enabled | grep -E '^epel([[:space:]]|-next[[:space:]])' || echo "EPEL repositories are disabled"
EPEL repositories are disabled
Conclusion
Remi is available to DNF on CentOS Stream, with PHP module streams and optional Redis or Memcached packages managed through normal package updates. Keep Remi and EPEL enabled while packages from those repositories remain installed; for web-server integration, continue with installing and configuring PHP on CentOS Stream and the CentOS Stream EPEL setup guide when you need deeper EPEL maintenance context.


Formatting tips for your comment
You can use basic HTML to format your comment. Useful tags currently allowed in published comments:
<code>command</code>command<strong>bold</strong><em>italic</em><a href="https://example.com">link</a><blockquote>quote</blockquote>