Fedora already tracks many web-stack packages well, but some projects need a PHP branch, Redis server, or cache extension that Fedora’s default repositories do not currently ship. The Remi repository fills that gap with RPM packages for current Fedora releases, so you can install the Remi RPM repo on Fedora and keep those packages updated through DNF.
Remi is most useful when an application needs a specific PHP module stream, original Redis instead of Fedora’s Redis-compatible Valkey path, or PECL extensions built for a newer PHP branch. If Fedora’s default PHP package already fits your stack, the standard PHP on Fedora workflow remains the simpler choice.
Install Remi Repository on Fedora
Update Fedora Before Installing Remi
Refresh Fedora first so DNF resolves the Remi release package against current system metadata:
sudo dnf upgrade --refresh
These commands use
sudofor package and service changes. If your account is not in Fedora’s admin group yet, add it with the Fedora sudoers setup guide before continuing.
Install the Remi Release Package
Install the release RPM that matches your Fedora version. The $(rpm -E %fedora) expression expands to your current Fedora release number, such as 44 on Fedora 44:
sudo dnf install "https://rpms.remirepo.net/fedora/remi-release-$(rpm -E %fedora).rpm"
DNF may print a skipped OpenPGP check warning for the URL-installed @commandline RPM. That warning is expected for this bootstrap package; later package transactions use the Remi signing key installed by remi-release.
Confirm the release package installed:
rpm -q remi-release
On Fedora 44, the package query returns:
remi-release-44-1.fc44.remi.noarch
Verify Remi Repository Files
The Remi release package enables the main and modular repositories, while testing and debuginfo repositories stay disabled. Check the enabled repositories with DNF:
dnf repo list --enabled | grep -E '^remi'
Relevant output includes:
remi Remi's RPM repository - Fedora 44 - x86_64 remi-modular Remi's Modular repository - Fedora 44 - x86_64
Inspect the repository package payload when you want to see the repo files and local key paths:
rpm -ql remi-release | grep -E '/etc/yum.repos.d/|/etc/pki/rpm-gpg/'
Relevant output includes:
/etc/pki/rpm-gpg/RPM-GPG-KEY-remi-44 /etc/yum.repos.d/remi-modular.repo /etc/yum.repos.d/remi.repo
Import the Remi Signing Key Non-Interactively
Interactive installs can accept DNF’s key prompt when the first Remi package is installed. For scripted setups, import the release-specific key before installing packages:
sudo rpm --import "/etc/pki/rpm-gpg/RPM-GPG-KEY-remi-$(rpm -E %fedora)"
Verify the imported key entry:
rpm -q gpg-pubkey --qf '%{NAME}-%{VERSION}-%{RELEASE} %{SUMMARY}\n' | grep -i 'Remi'
Fedora 44 currently imports Remi’s 2026 key:
gpg-pubkey-2e375fe24edff0f2e0d8e165ed5b58c5befa00e2-695bd535 Remi's RPM repository 2026 (https://rpms.remirepo.net/) <remi@remirepo.net> public key
Choose Remi Packages on Fedora
Remi is an add-on source, not a blanket replacement for Fedora’s repositories. Keep it for the packages that need Remi’s branch or extension coverage, and leave the normal Fedora package path alone when it already matches your application.
| Package Area | Use Remi When | Fedora Default Path |
|---|---|---|
| PHP | You need a specific PHP stream such as 8.5, 8.4, 8.3, or an older legacy branch for compatibility testing. | Use Fedora’s PHP packages when the default branch fits your application. |
| Redis | You need original Redis packages, Redis module streams, or the Remi PHP Redis extension package php-pecl-redis6. | Current Fedora releases use Valkey for the Redis-compatible default path. |
| Apache HTTPD | Remi does not replace Fedora’s normal Apache package path for this workflow. | Install and manage httpd from Fedora, then pair it with Remi PHP packages only when your PHP stack needs Remi. |
| Memcached and PECL extensions | You need Remi-built Memcached packages or PHP cache extensions that match a Remi PHP stream. | Use Fedora packages only when you are not enabling the Remi repository for this stack. |
Apache itself stays on Fedora’s httpd package path. Use the guide to install Apache HTTPD on Fedora for service startup, firewalld, SELinux, and virtual host setup, then add Remi PHP packages only when your application needs them.
Enable and Install PHP from Remi on Fedora
List Available PHP Streams
Remi publishes PHP through DNF module streams. List them before choosing a branch:
dnf module list php
Relevant output includes:
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
The PHP supported versions page should decide production branch choices, not only the fact that a Remi stream exists. PHP 8.5 and 8.4 are active branches, PHP 8.3 and 8.2 are security-only branches, and older streams are legacy compatibility options.
| Stream | Status | Best Fit |
|---|---|---|
| php:remi-8.5 | Current active branch | New projects and compatibility testing for the newest PHP line. |
| php:remi-8.4 | Active branch | Production stacks that want a current branch with wider ecosystem adoption. |
| php:remi-8.3 or php:remi-8.2 | Security fixes only | Applications that have not moved to newer PHP branches yet. |
| php:remi-8.1, 8.0, or 7.4 | End of life upstream | Short-term legacy maintenance only, ideally isolated from public workloads. |
Enable a PHP Stream
Enable the PHP branch your application needs. PHP 8.5 is the current Remi stream on Fedora 44:
sudo dnf module enable php:remi-8.5
For a legacy application pinned to an older branch, substitute the stream name after confirming that branch is still required. For example, applications that still need PHP 8.1 would use:
sudo dnf module enable php:remi-8.1
Do not use end-of-life PHP streams for new public applications. They remain useful for migration work, but they no longer receive normal upstream security support.
Install PHP Runtime and Common Web Packages
Install PHP CLI, PHP-FPM, and common web extensions from the enabled stream:
sudo dnf install php-cli php-fpm php-mbstring php-xml
Check the installed branch and Remi build line:
php --version
Point releases and build dates change, but the output should identify the selected PHP branch and the Remi build source:
PHP 8.5.6 (cli) (built: May 5 2026 21:19:36) (NTS gcc x86_64) Copyright (c) The PHP Group Built by Remi's RPM repository <https://rpms.remirepo.net/> #StandWithUkraine Zend Engine v4.5.6, Copyright (c) Zend Technologies
Check the loaded extensions installed in this step:
php -m | grep -E '^(mbstring|xml)$'
mbstring xml
For web-server integration, connect PHP-FPM to your server stack after PHP is installed. The Fedora-specific Nginx socket workflow is covered in the guide to configure Nginx with PHP-FPM on Fedora.
Switch Between PHP Streams
DNF blocks direct stream switches unless you reset the current module selection first. Reset PHP, enable the new stream, then update the installed PHP packages:
sudo dnf module reset php
sudo dnf module enable php:remi-8.4
sudo dnf upgrade --refresh
Recheck the active PHP branch after switching:
php --version
Enable and Install Redis from Remi on Fedora
Fedora’s default Redis-compatible path is Valkey, while Remi provides original Redis module streams. If you only need Fedora’s default cache service, use the dedicated guide for installing Redis or Valkey on Fedora. Use the Remi path when your application expects original Redis packages or a specific Redis branch.
List Available Redis Streams
List the Redis streams exposed by Remi:
dnf module list redis:remi*
Fedora 44 currently shows these Remi streams:
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
Enable and Install Redis
Enable the Redis stream you want. Redis 8.6 is the current Remi stream on Fedora 44:
sudo dnf module enable redis:remi-8.6
Install Redis from the enabled stream:
sudo dnf install redis
Check the Redis server version:
redis-server --version
Relevant output includes:
Redis server v=8.6.3 sha=00000000:0 malloc=jemalloc-5.3.0 bits=64 build=5d1ead486b651156
Start and Verify Redis Service
Enable Redis at boot and start it now:
sudo systemctl enable --now redis
Verify the service and local ping response:
systemctl is-active redis
systemctl is-enabled redis
redis-cli ping
active enabled PONG
Redis should stay bound to localhost unless you have configured authentication, firewall rules, and an application reason for remote access. Do not expose Redis directly to untrusted networks.
Install PHP Redis Extension from Remi
PHP applications that talk to Redis usually need a PHP extension as well as the Redis service. Remi packages that extension as php-pecl-redis6 for the active Remi PHP stream:
sudo dnf install php-pecl-redis6
Verify that PHP loads the Redis extension:
php -m | grep -E '^redis$'
redis
Restart PHP-FPM if your web server already uses it, then retest the application path that connects to Redis:
sudo systemctl restart php-fpm
Install Memcached and PHP Cache Extensions from Remi on Fedora
After Remi is enabled, DNF can select Remi’s Memcached package and matching PHP extensions. This is useful when a PHP application needs php-pecl-memcached built for the active Remi PHP stream.
Install and Start Memcached
Install Memcached, then start the service:
sudo dnf install memcached
sudo systemctl enable --now memcached
Check the service state and package version:
systemctl is-active memcached
systemctl is-enabled memcached
memcached -h | sed -n '1p'
active enabled memcached 1.6.41
Memcached has no built-in authentication in the normal Fedora service configuration. Keep it on localhost unless your application has a secured private network design and firewall rules to match.
Install PHP Memcached Extension
Install the PHP extension for the active Remi PHP stream:
sudo dnf install php-pecl-memcached
Verify that PHP loads the extension:
php -m | grep -E '^memcached$'
memcached
Restart PHP-FPM if your web server is already using it, then retest your application:
sudo systemctl restart php-fpm
Update Remi Packages on Fedora
Remi packages update through the same DNF workflow as the rest of Fedora. A normal refresh upgrade checks Fedora, Remi, and any other enabled repositories:
sudo dnf upgrade --refresh
Major PHP or Redis branch changes are different from routine updates. Reset the module and enable the new stream first, then run the refresh upgrade so DNF can replace the branch-specific packages cleanly.
Troubleshoot Remi Repository Issues on Fedora
Module Conflicts When Switching PHP Versions
DNF reports a module stream conflict when a different PHP stream is already enabled:
The operation would result in switching of module 'php' stream 'remi-8.5' to stream 'remi-8.4' Error: It is not possible to switch enabled streams of a module unless explicitly enabled via configuration option module_stream_switch.
Reset the module, enable the intended stream, then upgrade the installed packages:
sudo dnf module reset php
sudo dnf module enable php:remi-8.4
sudo dnf upgrade --refresh
GPG Key Import Prompts
The first package transaction from Remi can import the repository key from the local key file installed by remi-release:
Importing OpenPGP key 0xBEFA00E2: UserID : "Remi's RPM repository 2026 (https://rpms.remirepo.net/) <remi@remirepo.net>" Fingerprint: 2E375FE24EDFF0F2E0D8E165ED5B58C5BEFA00E2 From : file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi-44
Accept the prompt when the fingerprint matches the key file for your Fedora release. For unattended installs, import the key ahead of time with the non-interactive command shown in the installation section.
Repository Not Found After Fedora Upgrade
Fedora release upgrades can leave third-party repository packages needing a refresh. After you upgrade Fedora with DNF5 system-upgrade, reinstall the Remi release package for the new Fedora number if Remi repositories no longer appear:
sudo dnf install "https://rpms.remirepo.net/fedora/remi-release-$(rpm -E %fedora).rpm"
dnf repo list --enabled | grep -E '^remi'
Slow or Broken Remi Mirrors
Remi uses mirrorlists, and an individual mirror can lag or return a temporary metadata error. Refresh metadata and retry before changing repository files:
sudo dnf clean metadata
sudo dnf upgrade --refresh
If downloads remain slow, tune DNF’s normal mirror and download behavior instead of hard-coding a single Remi mirror. The Fedora guide to increasing DNF speed covers parallel downloads and fastest-mirror settings.
Remove Remi Repository and Packages from Fedora
Remove Remi packages before removing the repository package. Reset module streams after package removal so DNF no longer keeps the Remi branch selection.
Remove PHP Packages and Reset Module
Remove only the PHP packages that are currently installed:
php_packages=(php-cli php-fpm php-mbstring php-xml php-common php-pecl-redis6 php-pecl-memcached php-pecl-igbinary php-pecl-msgpack liblzf)
installed_php=()
for package in "${php_packages[@]}"; do
if rpm -q "$package" >/dev/null 2>&1; then
installed_php+=("$package")
fi
done
if ((${#installed_php[@]})); then
sudo dnf remove "${installed_php[@]}"
else
echo "No matching Remi PHP packages are installed"
fi
sudo dnf module reset php
Remove Redis Packages and Data Boundary
Redis stores persistent data under
/var/lib/redis/when configured to write snapshots or append-only files. Back up that directory before removing Redis if the data matters.
Stop Redis when its unit exists, remove installed Redis packages, then reset the Redis module:
if systemctl cat redis.service >/dev/null 2>&1; then
sudo systemctl disable --now redis
fi
redis_packages=(redis redis-bloom redis-json redis-timeseries)
installed_redis=()
for package in "${redis_packages[@]}"; do
if rpm -q "$package" >/dev/null 2>&1; then
installed_redis+=("$package")
fi
done
if ((${#installed_redis[@]})); then
sudo dnf remove "${installed_redis[@]}"
else
echo "No matching Redis packages are installed"
fi
sudo dnf module reset redis
Remove Memcached and PHP Cache Extensions
Stop Memcached when present, then remove the Memcached package and related PHP cache-extension dependencies:
if systemctl cat memcached.service >/dev/null 2>&1; then
sudo systemctl disable --now memcached
fi
cache_packages=(memcached memcached-selinux php-pecl-memcached php-pecl-igbinary php-pecl-msgpack fastlz libmemcached-awesome)
installed_cache=()
for package in "${cache_packages[@]}"; do
if rpm -q "$package" >/dev/null 2>&1; then
installed_cache+=("$package")
fi
done
if ((${#installed_cache[@]})); then
sudo dnf remove "${installed_cache[@]}"
else
echo "No matching Memcached packages are installed"
fi
Remove Remi Repository Files
Remove the repository release package after dependent packages are gone:
sudo dnf remove remi-release
sudo dnf clean metadata
Verify that Remi is no longer enabled and that no Remi repo files remain:
dnf repo list --enabled | grep -E '^remi' || echo "No Remi repositories enabled"
find /etc/yum.repos.d -maxdepth 1 -name 'remi*.repo' -print
No Remi repositories enabled
Remove Remi Signing Key
The imported Remi signing key can remain harmlessly in the RPM database. Remove it only when no remaining Remi repository or package on the system needs that trust entry. Set the fingerprint variable to the Remi key printed by your earlier key query; Fedora 44’s 2026 key is shown here:
remi_key_fingerprint=2e375fe24edff0f2e0d8e165ed5b58c5befa00e2
mapfile -t remi_keys < <(rpm -q gpg-pubkey --qf '%{VERSION}\n' | grep -i "$remi_key_fingerprint" || true)
if ((${#remi_keys[@]})); then
sudo rpmkeys --delete "${remi_keys[@]}"
else
echo "No matching Remi signing key is installed"
fi
Confirm the key is gone:
rpm -q gpg-pubkey --qf '%{NAME}-%{VERSION}-%{RELEASE} %{SUMMARY}\n' | grep -i 'Remi' || echo "No Remi signing key installed"
No Remi signing key installed
Conclusion
Remi is now available as a DNF-managed Fedora repository, with the main and modular channels ready for PHP, Redis, Memcached, and matching PHP cache extensions. Run routine Remi updates through dnf upgrade --refresh, reset module streams before major branch changes, and remove Remi packages before deleting the repository package when you no longer need the source.


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>