PHP保存Session到Redis

PHP保存Session到Redis

微信搜索 zze_coding 或扫描 👉 二维码关注我的微信公众号获取更多资源推送:

PHP 默认是将 Session 信息保存到文件中,那下面就演示一下将 phpMyAdmin 程序的 Session 信息保存到 Redis。

注意哦,这里仅是以 phpMyAdmin 程序做演示,PHP 进程 Session 信息保存位置和程序是无关的。

环境准备

1、参考【搭建基于 FastCGI 协议的 LNMP】搭建好 LNMP。

2、下载 phpMyAdmin,可以官网下载,也可关注文章首部微信公众号发送 #phpMyAdmin 获取 phpMyAdmin 源码包。

3、解压 phpMyadmin 压缩包,将文件夹移动到 /code 目录下:

$ tar xf phpMyAdmin-4.0.5-all-languages.tar.gz
$ mv phpMyAdmin-4.0.5-all-languages /code/phpmyadmin

4、修改 Nginx 配置如下:

$ vim /etc/nginx/conf.d/php.conf
server {
    listen 80; 

    root /code/phpmyadmin;
    location / { 
        index index.php;
    }   
 
    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;
    }   
}

5、修改 phpMyAdmin 配置:

$ cd /code/phpmyadmin/
$ mv config.sample.inc.php config.inc.php

6、修改 Session 保存目录的权限:

$ chown -R www.www /var/lib/php/session/

7、重载 Nginx 配置,浏览器访问:
image.png

8、输入账号密码登录,然后查看 Session 保存目录:

$ ls /var/lib/php/session/ 
sess_ku8ve5iortrct7hl8ur86g222d55514e

即当前的会话信息已经保存到了此目录。

保存 Session 信息到 Redis

1、安装 Redis 即 PHP 的 Redis 驱动:

$ yum install redis php72w-pecl-redis -y

2、修改 PHP 配置文件:

$ vim /etc/php.ini
session.save_handler = redis
session.save_path = "tcp://127.0.0.1:6379"
session.auto_start = 1

3、修改 PHP-FPM 配置文件,注释下面配置:

$ vim /etc/php-fpm.d/www.conf
;php_value[session.save_handler] = files
;php_value[session.save_path]    = /var/lib/php/session

4、启动 Redis 并 重启 PHP-FPM:

$ systemctl start redis
$ systemctl restart php-fpm

5、再次使用浏览器访问并登录:
image.png

6、使用 Redis 客户端工具查看:

$ redis-cli            
127.0.0.1:6379> keys *
1) "PHPREDIS_SESSION:endg17s3n5a4tm82lilkbvgkq4"
2) "PHPREDIS_SESSION:cbid5s9akoqr9f4j9r1cng983lfmmahi"

可以看到 PHP 进程的 Session 信息已经保存到 Redis~~~

Copyright: 采用 知识共享署名4.0 国际许可协议进行许可

Links: https://www.zze.xyz/archives/php-session-redis.html

Buy me a cup of coffee ☕.