ubuntu 20.04 将 php 8 session 切换至 redis 需三步:确保 redis 启动并安全配置(绑定本地、设强密码、内存与持久化策略);用 apt 安装 php8.0-redis 扩展并启用;修改 php.ini 中 session.save_handler=redis 及 save_path 含认证参数,最后验证 key 是否生成。

Ubuntu 20.04 上将 PHP 8 的 session 存储从文件切换到 Redis,核心是三步:确保 Redis 服务就绪、启用 PHP Redis 扩展、修改 session 处理器配置。整个过程不依赖源码编译,用 APT 安装的官方包即可稳定运行。
确认 Redis 已安装并安全运行
Redis 必须启动且配置合理,否则 PHP 连接会失败或存在风险:
- 检查服务状态:
sudo systemctl status redis-server,若未运行则执行sudo systemctl start redis-server - 编辑配置文件:
sudo nano /etc/redis/redis.conf,确保以下关键项已设置:-
bind 127.0.0.1 ::1(禁止监听公网,仅限本地访问) -
requirepass your_strong_password(设置强密码,不可为空) -
maxmemory 256mb和maxmemory-policy allkeys-lru(防内存溢出) -
save 60 10000(开启基础 RDB 持久化,避免断电丢 session)
-
- 重启服务使配置生效:
sudo systemctl restart redis-server - 用客户端验证:
redis-cli -a your_strong_password ping返回PONG即通
安装并启用 PHP Redis 扩展
PHP 8 需加载 redis.so 才能与 Redis 通信:
- 安装扩展(以 PHP 8.0 为例):
sudo apt install php8.0-redis - 确认扩展已启用:查看
/etc/php/8.0/fpm/conf.d/20-redis.ini是否存在且内容为extension=redis.so - 若使用 Apache 模块,则对应路径为
/etc/php/8.0/apache2/conf.d/20-redis.ini - 重启 PHP 服务:
sudo systemctl restart php8.0-fpm(FPM)或sudo systemctl restart apache2(Apache)
修改 PHP Session 配置指向 Redis
告诉 PHP 把 session 数据写进 Redis,而非默认的文件目录:
- 编辑对应 PHP 版本的主配置文件,例如:
sudo nano /etc/php/8.0/fpm/php.ini - 找到
[Session]区域,修改两行:session.save_handler = redissession.save_path = "tcp://127.0.0.1:6379?auth=your_strong_password&database=0"
- 保存后重载配置:
sudo systemctl reload php8.0-fpm(FPM)或重启 Web 服务 - 创建测试脚本
test_session.php验证:<?php session_start(); $_SESSION['test_key'] = 'redis_works'; echo session_id();
浏览器访问后,用命令redis-cli -a your_strong_password keys 'PHPREDIS_SESSION*'查看是否生成 key
验证与排错要点
配置生效后需快速确认 session 是否真正落地 Redis:
- 用
phpinfo()页面检查session.save_handler显示为redis,且Loaded Extensions含redis - 若页面报错“Failed to write session data”,常见原因有:密码错误、端口不通、
save_path格式缺参数(如漏掉?auth=...)、Redis 内存满或拒绝写入 - 临时关闭密码验证调试时,可先注释掉
requirepass并重启 Redis,但上线前务必恢复 - 分布式部署时,所有服务器必须共用同一套 Redis 实例和密码,且 PHP 配置完全一致
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











