SESSION详解

	**PHP的session存放路径及其配置session.save_path**

PHP配置文件(php.ini)中session.save_path负责session文件的存放位置。(下图为session文件默认存放位置)
在这里插入图片描述
如果没有配置则不会生成session文件,如果配置的目录session.save_path = "E:/xxx"不存在,则会报错:

Warning: session_start() [function.session-start]: open(E:/xxx\sess_e0b64760c92422d81c1d6202b66884f6, O_RDWR) failed: No such file or directory (2) in E:\APMServ5.2.6\www\htdocs\session\index.php on line 13
Warning: Unknown: open(E:/ttt\sess_e0b64760c92422d81c1d6202b66884f6, O_RDWR) failed: No such file or directory (2) in Unknown on line 0
Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (E:/xxx) in Unknown on line 0

所以,如果需要生成session文件,需要检查配置文件.如果没有配置目录,则请将php.ini中的“;session.save_path = “/tmp”” 改为“session.save_path = “E:/yourdir””,并切记在E盘根目录下新建,名为yourdir的文件夹。

设置完成后需要重启服务,然后设置生效。
可以在PHP文件里检测是否设置成功

    $session_path = session_save_path();
    if (strpos ($session_path, ";") !== FALSE)
        $session_path = substr ($session_path, strpos ($session_path, ";")+1);

    //获取当前session的保存路径
    echo $session_path;

PHP的session存放流程
(以thinkphp5为例)

use think\Session;
...
    public function aaa()
    {
        //设置session键值对 (name=>'小黑')
        Session::set('name','小黑');
        return 111;
    }

访问该方法,会生成一个名为PHPSESSID的COOKIE,用于存放SESSIONID,如下
在这里插入图片描述
同时会在服务器端生成一个文件,用于存放该session,存放目录为php.ini中的session.save_path
在这里插入图片描述
文件名为SESSIONID,内容是经过序列化后的session键值对,序列化函数参见serialize,内容如下
在这里插入图片描述

参见:https://www.cnblogs.com/wangtao_20/archive/2011/02/16/1955659.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值