PHP未安装Redis扩展,需在宝塔软件商店中进入对应PHP版本的设置→安装扩展→勾选redis,若提示已存在则检查php.ini中extension=redis.so是否启用,修改后必须重启PHP服务才能生效。

宝塔面板里装Redis,为什么phpinfo()看不到redis扩展?
不是Redis服务没启动,而是PHP本身没装redis扩展——宝塔默认只装服务端,不自动编译PHP的客户端扩展。
实操建议:
立即学习“PHP免费学习笔记(深入)”;
- 进宝塔「软件商店」→ 找到已安装的PHP版本 → 点击「设置」→「安装扩展」→ 勾选
redis(注意:不是memcached,两者扩展名不同) - 如果勾选后提示“扩展已存在但未启用”,去
/www/server/php/{版本号}/etc/php.ini手动检查是否有extension=redis.so,没有就加上;有但被注释了就取消注释 - 改完必须重启PHP服务(宝塔界面点「重载配置」不够,要「重启」)
- 验证:运行
php -m | grep redis,有输出才真正生效;phpinfo()里搜redis才能看到模块信息
Memcached扩展装了却连不上,常见连接失败原因
Connection refused或Failed to connect to 127.0.0.1:11211,90%不是代码问题,是服务状态或权限没对上。
实操建议:
立即学习“PHP免费学习笔记(深入)”;
- 先确认Memcached服务是否在运行:
systemctl status memcached;如果没启动,用宝塔「软件商店」里Memcached右侧的「启动」按钮,别直接service start - 宝塔安装的Memcached默认监听
127.0.0.1:11211,但有些PHP代码写成localhost,在部分系统(尤其启用了IPv6的)会解析成::1,导致连不上;统一改成127.0.0.1 - 检查PHP的
memcached扩展是否加载成功:php -m | grep memcached;注意扩展名是memcached(带d),不是memcache(旧版,已淘汰) - 如果用的是
memcache扩展(非memcached),它不支持SASL认证,而宝塔新版Memcached默认启用了SASL,必须关掉:vim /etc/sysconfig/memcached,把OPTIONS里的-S删掉,再重启服务
PHP里用Redis存session,session.save_handler = redis配错就白忙
光改php.ini还不够,漏掉任一参数,登录态就存不住、取不出,表现为反复跳登录页或购物车清空。
实操建议:
立即学习“PHP免费学习笔记(深入)”;
- 在
/www/server/php/{版本号}/etc/php.ini中设置:session.save_handler = redis session.save_path = "tcp://127.0.0.1:6379?database=1"
注意database=1不能省略,默认db 0容易和业务缓存冲突;路径里不要加auth=xxx,宝塔Redis默认无密码,加了反而报错 - 如果Redis开了密码(比如你手动改过
/www/server/redis/redis.conf里的requirepass),那save_path得写成:"tcp://127.0.0.1:6379?auth=你的密码&database=1" - 改完必须重启PHP,且确保网站根目录的
.user.ini里没用session.save_handler覆盖掉全局配置(宝塔默认会生成该文件,有时会干扰) - 验证方法:在PHP里执行
session_start(); $_SESSION['test'] = time();,然后进Redis命令行redis-cli -p 6379 -n 1 keys 'PHPSESSID*',能查到key才算真正走通
Redis/Memcached共存时,怎么避免端口或内存打架?
宝塔默认Redis用6379、Memcached用11211,看似不冲突,但实际部署常因内存分配不合理导致一个吃光资源,另一个频繁OOM。
实操建议:
立即学习“PHP免费学习笔记(深入)”;
- 进宝塔「软件商店」→ 分别点击Redis和Memcached → 「设置」→「配置修改」,重点调两处:
- Redis:把
maxmemory设为具体值,比如256mb(别写256m,单位必须小写);同时确认maxmemory-policy是allkeys-lru或volatile-lru,别留空 - Memcached:把
-m参数从默认64(MB)按需调高,比如-m 128;别超过服务器总内存的25%
- Redis:把
- 两个服务都启用后,用
htop或宝塔「监控」看内存占用,如果Redis长期占满、Memcached进程频繁消失,说明Redis的maxmemory没生效(常见于配置文件路径填错或没重启服务) - 线上环境别让两者都存session——选一个就够了。Redis更稳,支持持久化和集群;Memcached更快但纯内存,宕机即丢session
配置缓存不是开个开关就完事,关键是每个环节的衔接点都要亲手验证一次:服务起来没、扩展加载没、连接通没、数据落盘没。少验一步,上线后就可能半夜收告警。



















