在php.ini中存在以下几个配置项:

session.save_path=""   --设置session的存储路径
session.save_handler="" --设定用户自定义存储函数,如果想使用PHP内置会话存储机制之外的可以使用本函数(数据库等方式)
session.auto_start   boolen --指定会话模块是否在请求开始时启动一个会话,默认为0不启动
session.serialize_handler   string --定义用来序列化/反序列化引擎名字。默认使用php

例如:

session.save_path="D:\xampp\tmp" 表明所有的session文件都是存储在xampp/tmp下
session.save_handler=files    表明session是以文件的方式来进行存储的
session.auto_start=0 表明默认不启动session
session.serialize_handler=php     表明session的默认序列化引擎使用的是php序列化引擎

不同的引擎所对应的session的存储方式不相同。php存储session的三种模式(序列化/反序列化引擎):

php_serialize(php≥5.5.4)经过serialize()函数序列化数组
php键名➕竖线➕经过serialize()序列化的值
php_biary键名长度对应的ascii字符➕键名➕serialize()序列化的值

在PHP中默认使用的是PHP引擎,如果要修改为其他的引擎,只需要添加代码ini_set('session.serialize_handler', '需要设置的引擎');

举栗说明:

<?php
ini_set("session.serialize_handler","php");
session_start();
$_SESSION['shaw'] = $_GET['shaw'];
?>

运行该代码后,可看到请求头存在Cookie=a7d4f0vgjr1l1hr6aud13noae6

关于session的存储机制:

php中的session中的内容并不是放在内存中的,而是以文件的方式来存储的,存储方式就是由配置项session.save_handler来进行确定的,默认是以文件的方式存储。

存储的文件是以sess_sessionid来进行命名的,文件的内容就是session值的序列话之后的内容。

在本地找到sess_a7d4f0vgjr1l1hr6aud13noae6,查看内容:

简单记就是有竖线就是php类型。康康另一种模式(php_serialize):

<?php
ini_set("session.serialize_handler","php_serialize");
session_start();
$_SESSION['shaw'] = $_GET['shaw'];
?>

最后,看一下第三种(php_biary):

<?php
ini_set("session.serialize_handler","php_binary");
session_start();
$_SESSION['shaw'] = $_GET['shaw'];
?>

显示的是: