How to Install Remi RPM Repo on Fedora 44

Install Remi RPM repository on Fedora 44 with DNF. Covers PHP version switching, Redis modules, Memcached, and removal steps.

Last updatedAuthorJoshua JamesRead time8 minGuide typeFedora

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 sudo for 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 AreaUse Remi WhenFedora Default Path
PHPYou 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.
RedisYou 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 HTTPDRemi 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 extensionsYou 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.

StreamStatusBest Fit
php:remi-8.5Current active branchNew projects and compatibility testing for the newest PHP line.
php:remi-8.4Active branchProduction stacks that want a current branch with wider ecosystem adoption.
php:remi-8.3 or php:remi-8.2Security fixes onlyApplications that have not moved to newer PHP branches yet.
php:remi-8.1, 8.0, or 7.4End of life upstreamShort-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.

Share this guide

Help another Linux user troubleshoot faster

Share this guide with someone troubleshooting Linux systems or saving it for later.

Follow LinuxCapable

Want more LinuxCapable guides in Google?

Add LinuxCapable as a preferred source so Google can show our tutorials more often in Top Stories and mark them as preferred in AI Mode and AI Overviews when relevant.

Add LinuxCapable as a preferred source on Google
Search LinuxCapable

Need another guide?

Search LinuxCapable for package installs, commands, troubleshooting, and follow-up guides related to what you just read.

Found this guide useful?

Support LinuxCapable to keep tutorials free and up to date.

Buy me a coffeeBuy me a coffee
Before commenting, please review our Comments Policy.
Formatting tips for your comment

You can use basic HTML to format your comment. Useful tags currently allowed in published comments:

You type Result
<code>command</code> command
<strong>bold</strong> bold
<em>italic</em> italic
<a href="https://example.com">link</a> link
<blockquote>quote</blockquote> quote block

Add to the discussion

Questions, fixes, command output, and version notes help keep this guide current.

Verify before posting: