必须为对应PHP版本单独安装redis扩展并重启PHP-FPM,否则PHP无法识别Redis类;Redis服务与PHP扩展是两个独立组件,扩展需匹配PHP版本、启用dl函数、正确配置序列化及持久连接。

宝塔面板里装 Redis 扩展 ≠ 装完 Redis 服务就自动可用,必须手动为对应 PHP 版本单独安装 redis 扩展,否则 PHP 脚本调用 new Redis() 会报 Class 'Redis' not found 错误。
为什么装了 Redis 服务,PHP 还连不上?
Redis 服务(redis-server)和 PHP 的 redis 扩展是两回事:前者是后台缓存进程,后者是 PHP 用来跟它通信的“翻译器”。宝塔装 Redis 只启动了服务端,没动 PHP 的任何东西。
- 宝塔「软件商店」里点安装 Redis → 启动的是
redis-server进程,监听6379端口 - PHP 要操作 Redis,必须加载
redis扩展(不是memcached,也不是igbinary单独扩展) - 扩展必须和当前网站用的 PHP 版本严格匹配(比如站点跑 PHP 8.2,就得去 PHP 8.2 的设置里装)
- 装完扩展后不重启 PHP-FPM,
phpinfo()里根本不会显示redis模块
在宝塔里给指定 PHP 版本装 redis 扩展
进宝塔左侧「软件商店」→「已安装」→ 找到你网站实际用的 PHP 版本(如 PHP 8.1),点「设置」→「安装扩展」:
- 搜索框输入
redis(注意全小写,别输成Redis或phpredis) - 勾选后点「安装」,等待进度条走完
- 安装完成后,立刻点右上角「重启」按钮(不是重载配置,是完整重启 PHP-FPM)
- 验证是否生效:SSH 连服务器执行
php -m | grep redis,输出redis即成功
如果用的是 PHP 8.4+,还要检查 dl 函数是否被禁用——进该 PHP 版本的「禁用函数」列表,确认 dl 不在其中,否则扩展无法动态加载。
装完扩展但 WordPress 插件仍连不上 Redis?
常见于插件(如 Redis Object Cache)配置错误或连接参数未生效:
-
wp-config.php中添加的define('WP_REDIS_HOST', '127.0.0.1');必须放在define('WP_DEBUG', false);下方,且不能被注释掉 - 若 Redis 改过端口(比如用了
6380),WP_REDIS_PORT必须同步改,不能硬写6379 - 如果 Redis 设置了密码,
WP_REDIS_PASSWORD必须显式定义,空字符串或漏写都会导致连接拒绝 - 宝塔「安全」→「防火墙」里要放行对应端口(本地调用一般不用开,但若 PHP 和 Redis 不在同一台机器,必须开)
插件页面显示 Status: Disconnected 时,先 SSH 执行 redis-cli -h 127.0.0.1 -p 6379 ping,返回 PONG 才说明服务层通;不通就查 redis-server 是否真在运行、端口是否被占用、配置文件里 bind 和 protected-mode 是否拦住了连接。
扩展装对了,但性能没提升?检查序列化和连接方式
默认的 PHP 序列化效率低,且每次请求新建连接开销大,这两个点不调,缓存反而可能拖慢响应:
- 装好
igbinary扩展后,在 PHP 配置文件(如/www/server/php/81/etc/php.ini)末尾加一行:redis.serializer = igbinary,再重启 PHP - 代码中把
$redis->connect()换成$redis->pconnect(),避免重复 TCP 握手;第 5 个参数建议设为 PHP-FPM 最大子进程数(如32) - 如果用的是 WordPress +
Redis Object Cache插件,它内部已用pconnect,但序列化仍需手动配igbinary
最容易被忽略的是:装了 igbinary 扩展却不改 php.ini 里的 redis.serializer,等于白装;或者改了配置但忘了重启 PHP,导致始终走默认序列化路径。


















