文件存储sessions
需要在先确定apache的php.ini的位置<然后编辑这个php.ini文件。
caikiki@ubuntu:/var/www/wordpress-4.6.5$ locate php.ini
/etc/php/7.0/apache2/php.ini
/etc/php/7.0/cgi/php.ini
/etc/php/7.0/cli/php.ini
/etc/php/7.0/fpm/php.ini
/usr/lib/php/7.0/php.ini-development
/usr/lib/php/7.0/php.ini-production
/usr/lib/php/7.0/php.ini-production.cli
caikiki@ubuntu: sudo vi /etc/php/7.0/apache2/php.ini
设置
session.save_handler = files
session.save_path = "/var/lib/php/sessions"
然后重新载入apache2 sudo service apache2 reload
。
这样才能将session以files形式存在服务器上。其实也只是一个id而已,会话这个概念的实体还是要在内存中为这个sessionid服务的进程才能得以体现。
caikiki@ubuntu:~$ sudo ls -al /var/lib/php/sessions
total 8
drwx-wx-wt 2 root root 4096 Jan 21 10:42 .
drwxr-xr-x 4 root root 4096 Jan 17 08:07 ..
-rw------- 1 www-data www-data 0 Jan 21 10:42 sess_h6hvi7nll3esbic26unu9i5ru2
另外session还可以用redis来存储。
redis存储sessions
需要先安装php的redis扩展。不知道包名的话,先搜一下,
caikiki@ubuntu:~$ sudo apt search redis|grep redis|grep php
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
libphp-predis/xenial 0.8.3-1 amd64
php-nrk-predis/xenial 1.0.0-1 amd64
php-redis/xenial,now 2.2.7-389-g2887ad1+2.2.7-1 amd64 [installed]
然后安装一下这个php-redis
。
编辑/etc/php/7.0/apache2/php.ini 文件。添加这两句
session.save_handler = redis
session.save_path = "tcp://127.0.0.1:6379?auth=xxxyyyzzz"
然后
caikiki@ubuntu:/var/lib/php/sessions$ redis-cli -h 127.0.0.1
127.0.0.1:6379> keys *
(error) NOAUTH Authentication required.
127.0.0.1:6379> auth xxxyyyzzz
OK
127.0.0.1:6379> keys *
1) "PHPREDIS_SESSION:h6hvi7nll3esbic26unu9i5ru2"
127.0.0.1:6379> keys *
1) "PHPREDIS_SESSION:h6hvi7nll3esbic26unu9i5ru2"
2) "PHPREDIS_SESSION:po3abp5b1u67deejht10vmp6n7"
注意这个redis存储会有超时的,过一段时间不用这个session,就会被php的垃圾回收删除掉。
127.0.0.1:6379> keys *
1) "PHPREDIS_SESSION:fc3mq8bocahu1b726ehbv0ftn6"
127.0.0.1:6379> keys *
(empty list or set)
参考:
http://blog.youkuaiyun.com/u011250882/article/details/48625179