おれんじぺこ

母、ときどきwebエンジニア

Redisの拡張機能「php-redis」をインストールする

実行環境

概要

AWSCakePHP環境を構築する際に、キャッシュサーバーとしてRedisを採用しました。
それに合わせて、php側のRedisの拡張機能であるphp-redisをインストールする必要があったので、その手順を書いておきたいと思います。

php-redisのインストール手順

(1)php-redisライブラリをインストール

まず、今回インストールするphp-redisライブラリがこのままでインストールできるのかを確認します。
今回phpをdnfリポジトリからインストールしたので、php-redisライブラリもdnfリポジトリからインストールしたいと思っているため、以下のコマンドを実行。

dnf list php8.4*

すると、一覧にphp8.4-pecl-redis6.x86_64の記載が。
今回のインストールライブラリとして問題はないので、こちらのライブラリをインストールします。
以下のコマンドでphp-redisをインストールします。

sudo dnf -y install php-pecl-redis

ちゃんとインストールされているか確認。

dnf list --installed | grep php

無事、ちゃんとインストールされていました!
現在、php-redisをインストールしただけなので、こちらの拡張機能を使えるように有効化設定を行います。
正常にインストールされている場合、Redisのiniファイルが作成されているはずです。
php拡張機能のiniファイルは、デフォルトだと/etc/php.d/に配置されています。
今回インストールしたphp-redisのiniファイルがあるかどうか確認します。

find /etc/php.d/ -type f -name "*redis*"

すると、redisのiniファイルがありましたので、そのredisのiniファイルに以下の内容を追記します。

extension = redis.so

ここまで対応したら、一旦Apcheの再起動を行います。

(2)phpのバージョンを確認すると・・・RedisでWarningが?!

Apacheを再起動し、phpのバージョン確認を行うと以下のWarningが発生していました・・・

$ php -v
PHP Warning:  PHP Startup: Unable to load dynamic library 'redis.so' (tried: /usr/lib64/php8.4/modules/redis.so (/usr/lib64/php8.4/modules/redis.so: undefined symbol: igbinary_serialize), /usr/lib64/php8.4/modules/redis.so.so (/usr/lib64/php8.4/modules/redis.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
PHP 8.4.10 (cli) (built: Jul  2 2025 02:22:42) (NTS gcc x86_64)
Copyright (c) The PHP Group
Built by Amazon Linux
Zend Engine v4.4.10, Copyright (c) Zend Technologies
    with Zend OPcache v8.4.10, Copyright (c), by Zend Technologies

php-igbinary拡張機能が定義されていないということなのでphp-igbinaryライブラリのインストール&有効化を行いたいと思います。

(3)php-igbinaryライブラリをインストール

php-redisのときと同様、dnfリポジトリからphp-igbinaryライブラリをインストールします。

sudo yum install -y php8.4-pecl-igbinary

そして、php-redisのときと同様、ライブラリの有効化を行い、Apacheを再起動します。
php -vで再度phpのバージョンを確認。

無事、php-redis(php-igbinary)のインストールに成功しました!

おわりに

今まで、エラーに遭遇したときはとりあえずググって・・・から始めていたのですが、
ちゃんとエラーを読んで対応を確認するって本当に大切だと実感しました。
ググって同じエラーメッセージでも、遭遇したケースによって対応法は違いますしね・・・
メッセージが英語だと反射的に身構えてしまうので、英語に対してもっとフレンドリーに向き合えるようにしていきたいですね。