需将PHP网站Session存储切换至Redis以解决多服务器会话不一致问题:一、确认Redis已安装运行;二、安装启用PHP Redis扩展;三、修改php.ini配置session.save_handler为redis并设置路径;四、通过redis-cli验证Session写入;五、可选配置站点级.user.ini实现单站独立配置。

如果您在宝塔面板中部署了基于PHP的网站,但发现Session数据默认写入本地文件系统,导致多服务器负载均衡下会话不一致或性能瓶颈,则需将Session存储切换至Redis。以下是配置网站Session使用Redis的具体步骤:
一、确认Redis服务已安装并运行
Session存入Redis的前提是服务器上已部署并启用Redis服务,且PHP扩展支持Redis作为Session处理器。需确保Redis服务处于活动状态,并监听默认端口6379(或自定义端口)。
1、登录宝塔面板,在左侧菜单点击软件商店,搜索“Redis”,确认其状态为“已安装”且运行状态为“正在运行”。
2、若未安装,点击“安装”按钮,选择对应版本完成安装;安装完成后点击“设置”→“服务”→“启动”。
3、进入“终端”或通过SSH连接服务器,执行redis-cli ping,返回PONG表示服务响应正常。
二、安装并启用PHP的Redis扩展
PHP必须加载redis.so或phpredis扩展,才能将Session handler设为redis。不同PHP版本需分别处理,宝塔支持一键安装扩展。
1、在宝塔面板中进入软件商店 → 找到已安装的PHP版本 → 点击右侧“设置” → 切换到“安装扩展”选项卡。
2、在扩展列表中找到redis(非“Redis扩展(旧版)”或“phpredis”重复项),点击“安装”。
3、安装完成后,返回“配置文件”选项卡,确认php.ini中存在extension=redis.so(Linux)或extension=php_redis.dll(Windows),且未被分号注释。
4、重启对应PHP服务:点击“服务”→“重启”。
三、修改PHP配置启用Redis Session处理器
需显式指定PHP使用redis作为session.save_handler,并配置正确的连接参数(如Redis地址、端口、密码、数据库索引等),使所有PHP-FPM进程统一写入同一Redis实例。
1、在宝塔面板中进入网站 → 选择目标站点 → 点击“设置” → 切换到“PHP版本”选项卡,记录当前所用PHP版本号(如8.0)。
2、返回软件商店 → 找到该PHP版本 → 点击“设置” → “配置文件”,打开php.ini。
3、在文件末尾新增以下四行(若已存在则修改值):
session.save_handler = redis
session.save_path = "tcp://127.0.0.1:6379?database=0"
session.cookie_httponly = 1
session.use_strict_mode = 1
4、若Redis设置了密码,将第二行改为:session.save_path = "tcp://127.0.0.1:6379?auth=your_password&database=0"(替换your_password为实际密码)。
5、保存文件后,点击“重载配置”或重启PHP服务。
四、验证Session是否写入Redis
配置生效后,PHP生成的新Session ID应被写入Redis的指定数据库,可通过命令行或Redis桌面工具直接观察键值变化,确认写入行为真实发生。
1、在服务器终端执行:redis-cli -n 0 keys "PHPREDIS_SESSION:*"(假设database=0)。
2、访问该网站任意PHP页面(如info.php,内容为<?php session_start(); echo session_id(); ?>),刷新几次。
3、再次执行上述redis-cli命令,应看到新增的以“PHPREDIS_SESSION:”开头的键名,且TTL非零(表明Redis自动管理过期)。
4、执行redis-cli -n 0 ttl "PHPREDIS_SESSION:abc123..."(替换为实际键名),返回数值大于0即表示Session存活且受Redis控制。
五、针对单站点的独立PHP配置(可选)
若仅需某一个网站使用Redis Session,而其他网站保持文件存储,可绕过全局php.ini,改用站点级.user.ini覆盖配置,避免影响全局PHP环境。
1、在宝塔面板中进入网站 → 选择目标站点 → “设置” → “配置文件” → 找到“网站目录”路径(如/www/wwwroot/example.com)。
2、在该目录下新建或编辑.user.ini文件(注意开头为点号)。
3、写入以下两行:
session.save_handler=redis
session.save_path="tcp://127.0.0.1:6379?database=0"
4、保存后,在面板中点击“重载配置”或等待宝塔自动重载(通常30秒内生效)。
5、检查该站点根目录下phpinfo()输出中的“Loaded Configuration File”是否仍为全局php.ini,但“Scan this dir for additional .ini files”应包含该目录,且Session相关项已按.user.ini覆盖。










