0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【ローカル環境構築】Error: Class "Redis" not found の解決方法

0
Last updated at Posted at 2026-08-05

発生したエラー

CodeIgniterで画面へアクセスした際に以下のエラーが発生しました。

Error:
Class "Redis" not found

原因調査

Redis拡張がPHPへインストールされているか確認しました。

確認コマンド:

docker exec php81 php -m | grep -i redis

結果:

redis

CLI環境ではRedis拡張が有効になっていることを確認しました。

しかし、ブラウザアクセスでは引き続きエラーが発生しました。

そのため、実際にアプリケーションが動作しているPHPコンテナを確認しました。

PHPコンテナの確認

Docker環境には以下のPHPコンテナが存在していました。

php81
php81-erp

それぞれRedis拡張を確認しました。

php81

docker exec php81 php -m | grep -i redis

結果:

redis

Redis拡張あり。

php81-erp

docker exec php81-erp php -m | grep -i redis

結果:

(何も表示されない)

php81-erp コンテナにはRedis拡張がインストールされていませんでした。

原因

今回ブラウザからアクセスしていたアプリケーションは、
php81-erp コンテナ上で動作していました。

そのため、CLIで確認した php81 コンテナではRedis拡張が有効でも、
実際に利用しているPHP環境ではRedisクラスを利用できずエラーになっていました。

また、Dockerfileには以下の設定が存在していました。

RUN pecl install redis && \
    docker-php-ext-enable redis

しかし、Dockerfileを変更しただけでは既存コンテナへ変更内容は反映されません。

古いイメージから作成されたコンテナではRedis拡張が有効になっていませんでした。

解決方法

対象コンテナを再作成しました。

1. コンテナ停止

docker compose stop apache-erp

2. コンテナ削除

docker compose rm apache-erp

3. Dockerイメージ再作成

docker compose build --no-cache apache-erp

4. コンテナ起動

docker compose up -d apache-erp

5. Redis拡張確認

docker exec php81-erp php -m | grep -i redis

結果:

redis

Redis拡張が有効になったことを確認しました。

学んだこと

  • Dockerfileを修正しただけでは既存コンテナへ変更は反映されない
  • 環境変更を反映する場合はbuildし直す必要がある
  • 複数PHPコンテナが存在する場合は、実際にアプリケーションが利用しているコンテナを確認する

JISOUのメンバー募集中!

プログラミングコーチングJISOUでは、新たなメンバーを募集しています。
日本一のアウトプットコミュニティでキャリアアップしませんか?
興味のある方は、ぜひホームページをのぞいてみてください!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?