跳转到主内容
趣航编程网 - 趣学编程,启航技术之路!

宝塔面板安装后如何配置PHP缓存_安装并优化Redis/Memcached

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 8.5.5 PHP 8.5.5 是 PHP 8.5 分支的维护更新版本。该版本延续了“小步快跑”的迭代逻辑,通过深度错误修复、底层性能微调以及安全加固,旨在为开发者提供一个更健壮、更高效的运行环境。该版本严格遵守语义化版本规范,不包含破坏性变更。 下载 实操建议: 立即学习 “ 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% 两个服务都启用后,用
htop
或宝塔「监控」看内存占用,如果Redis长期占满、Memcached进程频繁消失,说明Redis的
maxmemory
没生效(常见于配置文件路径填错或没重启服务) 线上环境别让两者都存session——选一个就够了。Redis更稳,支持持久化和集群;Memcached更快但纯内存,宕机即丢session 配置缓存不是开个开关就完事,关键是每个环节的衔接点都要亲手验证一次:服务起来没、扩展加载没、连接通没、数据落盘没。少验一步,上线后就可能半夜收告警。

相关文章