Laravel 10 运行需 PHP ≥ 8.1,要求 phpredis 扩展版本 ≥ 5.3.4(推荐 5.3.7+ 或 6.0+),须通过系统包管理器或 PECL 升级 C 扩展而非 Composer,并重启 PHP-FPM 验证生效。

直接升级 phpredis 扩展本身和 Laravel 10.x 无关——Laravel 不依赖 phpredis 扩展包,它只通过 ext-redis(PHP 的 Redis 扩展)与 Redis 通信。你真正要做的,是确认当前 PHP 环境加载的 redis 扩展版本是否满足 Laravel 10 的运行要求,并在必要时升级该扩展。
为什么 Laravel 10 对 phpredis 版本有隐性要求
Laravel 10 要求 PHP ≥ 8.1,而较新版本的 ext-redis(即通常说的 phpredis)才完整支持 PHP 8.1+ 的类型系统、错误处理和连接池行为。例如:
-
redis扩展 Deprecated: Return type of Redis::get() should be compatible with Redis::get($key) 类警告 - Laravel 的
RedisManager在调用pipeline()或scan()时,会依赖扩展返回的数组结构;旧版redis扩展在某些命令下返回null而非空数组,导致foreach报错 - 若你用的是 Laravel Sail,其默认 Docker 镜像(如
laravelsail/php81-composum)内置的redis扩展版本可能滞后,需手动覆盖
检查当前 phpredis 扩展版本
运行以下命令确认实际加载的扩展及其版本:
php -m | grep redis php --ri redis
重点关注输出中的 Redis Version 行,例如:
Redis Version => 5.3.7
低于 5.3.4 建议升级;6.0+ 可用但需确认 PHP 版本兼容性(redis 6.0+ 要求 PHP ≥ 8.0,Laravel 10 完全兼容)。
Linux/macOS 下升级 ext-redis 扩展
不要通过 Composer 安装 phpredis——那是 C 扩展,不是 PHP 包。正确方式是重新编译或使用包管理器:
- Ubuntu/Debian:
sudo apt update && sudo apt install php-redis(注意:确保php-redis对应当前 PHP CLI 和 FPM 的版本,例如php8.1-redis) - macOS + Homebrew:
pecl uninstall redis && pecl install redis,然后确认extension=redis.so在php.ini中启用 - Docker(Sail):在
dockerfiles/8.1或对应 PHP 版本目录中,追加安装指令:RUN pecl install redis && docker-php-ext-enable redis
升级后务必重启 PHP-FPM 或 Web 服务器(如 sudo systemctl restart php8.1-fpm),否则 php --ri redis 显示的仍是旧版本。
验证 Laravel 是否真正用了新版本的 redis 扩展
仅靠 php --ri redis 不够——Laravel 可能因配置绕过原生扩展。在项目中执行:
php artisan tinker
> Redis::connection()->client('INFO')['redis_version']
这返回的是 Redis 服务端版本;要确认客户端扩展版本,改用:
> (new Redis())->getVersion()
如果报 Class 'Redis' not found,说明扩展未加载成功;如果返回类似 ["5","3","7"],说明已生效。
最容易被忽略的是:Docker 环境中 PHP CLI 和 PHP-FPM 使用不同 php.ini,php -v 看到的版本 ≠ Web 请求实际加载的扩展。务必在 phpinfo() 页面里查 redis 模块是否出现在 Loaded Modules 中。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











