php session配置项详解

PHPABC PHP开发 1,715 次浏览 , 没有评论
  1. 配置
    配置项 默认值 权限 说明
    session.save_path “” PHP_INI_ALL 定义服务端存储session的临时文件的位置
    session.name PHPSESSID PHP_INI_ALL 定义sessionid的名称,即变量名
    session.save_handler files PHP_INI_ALL 定义session在服务端的保存方式,默认file,可选user
    session.auto_start 0 PHP_INI_ALL 如置1,则不用在每个文件里写session_start(); session自动start
    session.gc_probability
    session.gc_divisor
    session.gc_maxlifetime
    1
    100
    1440
    PHP_INI_ALL
    PHP_INI_ALL
    PHP_INI_ALL
    session.gc_probability与session.gc_divisor构成执行session清理的概率,理论上的解释为服务端定期有一定的概率调用gc函数来对session进行清理,清理的概率为:gc_probability/gc_divisor 比如:1/100 表示每一个新会话初始化时,有1%的概率会启动垃圾回收程序,清理的标准为session.gc_maxlifetime定义的时间。
    session.serialize_handler php PHP_INI_ALL 设置php的session的序列化方式,默认值为php,及使用php的序列化与反序列化。 igbinary( https://github.com/igbinary/igbinary
    session.cookie_lifetime 0 PHP_INI_ALL 保存sessionid的cookie文件的生命周期,如置0,代表会话结束,则sessionid就自动消失,常见的强行关闭浏览器,就会丢失上一次的sessionid
    session.cookie_path / PHP_INI_ALL 保存sessionid的cookie文件在客户端的位置
    session.cookie_domain “” PHP_INI_ALL 保 存sessionid的cookie的域名设置,这跟cookie允许的域名的访问权限设置有关,一般来说想让自己网站所有的目录都能访问到客户端的 cookie,就应该设置成“/”如需要详细了解,可以看下setcookie()函数的domain参数相关设置和使用方法
    session.cookie_secure “” PHP_INI_ALL 如果开启(1)表明你的cookie只有通过https协议传输时才起作用
    session.cookie_httponly “” PHP_INI_ALL 只能通过http访问,javascript无法访问
    session.use_cookies 1 PHP_INI_ALL sessionid在客户端采用的存储方式,置1代表使用cookie记录客户端的sessionid,同时,$_COOKIE变量里才会有$_COOKIE[‘PHPSESSIONID’]这个元素存在
    session.use_only_cookies 1 PHP_INI_ALL 也是定义sessionid在客户端采用的存储方式,置1代表仅仅使用 cookie 来存放会话 ID。一般来说,现在客户端都会支持cookie,所以建议设置成1,这样可以防止有关通过 URL 传递会话 ID 的攻击
    session.referer_check “” PHP_INI_ALL 这 个设置在session.use_trans_sid = 1的时候才会生效,目的是检查HTTP头中的”Referer”以判断包含于URL中的会话id是否有效,HTTP_REFERER必须包含这个参数指定 的字符串,否则URL中的会话id将被视为无效。所以一般默认为空,即不检查
    session.entropy_file /dev/urandom /dev/arandom “” PHP_INI_ALL 产生sessionid的随机数的发生器
    session.entropy_length 32 PHP_INI_ALL sessionid的长度
    session.cache_limiter nocache PHP_INI_ALL 设为no cache、private、public以决定HTTP的缓存问题
    session.cache_expire 180 PHP_INI_ALL 文档在 n 分钟后过时
    session.use_trans_sid 0 PHP_INI_ALL Cookie被禁用时使用过渡性的sessionid支持( 让PHP自动跨页传递sessionid); session.use_trans_sid = 1或者编译时打开打开了–enable-trans-sid
    session.hash_function 0 PHP_INI_ALL 选择session_name的加密方式,0代表md5加密,1代表sha1加密,默认是0,但是据说用sha1方式加密,安全性更高
    session.hash_bits_per_character 4 PHP_INI_ALL
    指定在session_name字符串中的每个字符内保存多少位二进制数,这些二进制数是hash函数的运算结果。
    4   bits:   0-9,   a-f
    5   bits:   0-9,   a-v
    6   bits:   0-9,   a-z,   A-Z,   “-“,   “,”
    session.upload_progress.enabled 1 ZEND_INI_PERDIR 是否启用上传进度报告
    session.upload_progress.cleanup 1 ZEND_INI_PERDIR 是否在上传完成后及时删除进度数据
    session.upload_progress.prefix upload_progress_ ZEND_INI_PERDIR 进度数据将存储在_SESSION[session.upload_progress.prefix . _POST[session.upload_progress.name]]
    session.upload_progress.name PHP_SESSION_UPLOAD_PROGRESS ZEND_INI_PERDIR 如果_POST[session.upload_progress.name]没有被设置, 则不会报告进度
    session.upload_progress.freq %1 ZEND_INI_PERDIR 更新进度的频率(已经处理的字节数), 也支持百分比表示’%’
    session.upload_progress.min_freq 1 ZEND_INI_PERDIR 更新进度的时间间隔(秒级)
  1. session模块启动流程(PHP_MINIT_FUNCTION)
    1. 注册全局变量$_SESSION
    2. 将session_status的值置为php_session_none
    3. 注册ini配置项(PHP_INI_BEGIN)
    4. 关于rfc1867的回调函数
    5. 注册名为SessionHandlerInterface的interface(http://php.sinaapp.com/manual/zh/class.sessionhandlerinterface.php)
    6. 注册名为SessionHandler的class(http://php.sinaapp.com/manual/zh/class.sessionhandler.php)
    7. 注册三个常量,分别是PHP_SESSION_DISABLED、PHP_SESSION_NONE、PHP_SESSION_ACTIVE(http://php.sinaapp.com/manual/zh/session.constants.php)
  2. session模块关闭流程(PHP_MSHUTDOWN_FUNCTION)
    1. 移除注册的ini配置
    2. 占位
  3. session RINIT
    1. php_rinit_session_globals初始化id=NULL,session_status=php_session_none,mod_data=NULL,mod_user_is_open=0,http_session_vars=NULL

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

Go