peclでredisをインストールして使ってみる
👶はじめに
こちらは、PHP(Laravel)ユーザー向けの記事となっております🔥
pecl install redis というコマンド、何してるんだろ、、
そもそも PECL って何????PHP拡張ってアプリと何が違うの????
そんな初学者の方に向けて、DockerとLaravel開発にも役立つように
「PHPの拡張」と「PECL」についてわかりやすくまとめました!
PECLとは何か?
**PECL(PHP Extension Community Library)は、
PHPの拡張モジュールを、探して・ダウンロードして・インストールしてくれるツール
って言われてもわからない場合、この記事で優しく解説します👇
「拡張モジュール」とは何か?
PHPは「標準の機能」だけだと、
できることが限られています。
でも、「もっと便利にしたい」「難しいことをしたい(高速通信、暗号化など)」🔥
そんなときに「追加機能」をインストールすることで、PHPに新しい力を与える仕組みがあります。
それが「拡張モジュール(extension)」です。
💡 たとえるなら:
PHP本体が「スマホ本体」
拡張モジュールが「アプリ」です。
例 | 例え |
---|---|
PHP本体 | 電話、カメラ、計算機など最低限の機能 |
拡張モジュール | YouTube、LINE、Instagram など追加機能 |
✅ 拡張モジュールの例:
機能 | 拡張名 | 説明 |
---|---|---|
Redis操作 | redis |
Redisというデータベースと高速に通信できる |
デバッグ | xdebug |
変数の中身や関数の流れを追えるようになる |
gRPC通信 | grpc |
高速なAPI通信ができるようになる |
zip操作 | zip |
zipファイルの圧縮・展開ができるようになる |
✅ 「PECL」とは?
PHP用の拡張モジュールを
「簡単に見つけて」「簡単にインストールする」ためのツールです。
☁️ イメージ ☁️
PECL → 拡張モジュールを売っている「アプリストア」
pecl install redis → スマホで「LINEをインストール」する操作
PECLの使い方(基本)
pecl install redis
このように pecl install コマンドを使うだけで、拡張モジュールが導入できます。
PHPコードで Redis を使いたい場合は、PECLで拡張を入れておかないと動きません👇
$redis = new Redis();
$redis->connect('localhost', 6379);
$redis->set('key', 'value');
整理
項目 | 内容 |
---|---|
拡張モジュールとは? | PHPに機能を追加する「アプリ」的なもの |
PECLとは? | その「アプリ」を探して、インストールできる公式仕組み |
なぜ必要? | PHPに標準で入ってない機能を使いたいとき |
どう使う? |
pecl install xxxx で入れる |
Dockerでpeclを使う
Dockerfileでpeclを使用して拡張モジュールのredisをインストールしてみましょう!
Redisは「とても高速なデータの一時保管庫」です。
データをメモリ上に保存するため、通常のデータベースより圧倒的に速く
キャッシュ、セッション、ランキング、リアルタイム通知などに最適です
⚠️注意点
- peclを使うには、php-pear や php-dev のようなビルドに必要なパッケージが必要です。
- redisをインストールしたら有効化が必須です。
✅ docker-php系(公式php-fpmイメージ)の場合
FROM php:8.3-fpm
# 基本ツールのインストールをしておく
# peclでredisインストール
RUN apt-get update && apt-get install -y \
php-pear php-dev \
&& pecl install redis \
&& docker-php-ext-enable redis
docker-php-ext-enable redis で自動で有効化される便利な仕組み!
✅ UbuntuベースのDockerfileの場合
FROM ubuntu:22.04
# 基本ツールのインストールをしておく
# peclでredisインストール
RUN apt-get update && apt-get install -y \
php-pear php8.3-dev \
&& pecl install redis \
# redisの有効化(2つのiniディレクトリに設定が必要)
&& echo "extension=redis.so" > /etc/php/8.3/cli/conf.d/20-redis.ini \
&& echo "extension=redis.so" > /etc/php/8.3/fpm/conf.d/20-redis.ini
Ubuntuベースでは .iniファイル を自分で追加して有効化が必要です
CLI(コマンド用)と FPM(ブラウザ経由)で設定ファイルが違う点に注意して以下の手順で確認してみよう
有効化されているかを確認する方法
php -m | grep redis # CLI(artisanなど)用
php-fpm8.3 -m | grep redis # FPM(ブラウザから)用
✅ redis が出れば、有効化OK!
CLI と FPM の設定は別ファイル!
以下のコマンドで、CLIとFPMが読み込んでいる設定ファイルを確認できます
php --ini
php-fpm8.3 -i | grep ini
結果を見て、読み込んでいる設定ファイルが異なる場合👇
両方のconf.d/に redis.iniファイル を作る必要があります。
php --ini
# => /etc/php/8.3/cli/conf.d/
php-fpm8.3 -i | grep ini
# => /etc/php/8.3/fpm/conf.d/
20-redis.ini の「20」って何?
.iniファイル の 読み込み順序をコントロールするための慣習的な番号!
数字が小さいほど先に読み込まれます。
20-redis.ini, 99-redis.ini でも機能は変わらないが、整理のため一般的に20がよく使われます🏃♀️
redisサーバー用のコンテナ定義
ymlファイルで以下のコンテナ定義を追加する👇
redis:
image: redis:7.2
ports:
- "6379:6379"
これで Redis サーバーの準備は完了!
Redis用の .env の設定
CACHE_DRIVER=redis
SESSION_DRIVER=redis
QUEUE_CONNECTION=redis
REDIS_CLIENT=phpredis
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_PASSWORD=null
Laravelで Redis を使うには、.env に上記を設定し、以下を実行しましょう👇
php artisan config:cache
🧠 まとめ
項目 | 内容 |
---|---|
PECLとは? | PHPの拡張を簡単にインストールできるツール |
拡張モジュールとは? | PHPにあとから機能を追加できる仕組み |
Dockerでの注意 | php-devやphp-pearのインストールが必要 |
redisの有効化 | .iniファイルに extension=redis.so を書く(CLIとFPM両方) |
有効か確認 |
php -m / php-fpm -m で確認可能 |
これで pecl install redis
の意味が「なんとなく」じゃなく「ちゃんと」理解できましたね!💡
Laravel×Redis開発に自信を持って使っていきましょう!
参考記事
DockerでPHP/laravelの環境を作る時によく使われるコマンド pecl install や docker-php-ext-install について
Discussion