php.ini session配置问题导致无法登录网站解决办法

遇到的问题:

  从外网拷贝一模一样的php代码、nignx配置、php-fpm.conf、php.ini 到内网,在登录网站时怎么也登录不上,总是提示验证码不正确,验证失败,无法登录

软件版本:【不确定是不是nginx版本不同的原因】

内外网php5.6  
外网nginx version: nginx/1.12.1
内网nginx version: openresty/1.17.8.2

解决流程:

1.确定配置文件没问题
2.找服务端查问题,屏蔽一些验证逻辑,最终发现应该是session的问题
3.从服务端得知是session的问题,意识到php.ini有session的配置选项
4.从网络上查找php.ini相关的session配置选项,最终配置如下
[Session]

session.save_handler=files
session.save_path="/tmp"
session.use_cookies=1
session.name=PHPSESSID
session.cookie_secure=Off
session.auto_start=0
session.cookie_lifetime=1800
session.cookie_path=/
session.cookie_domain=
session.serialize_handler=php
session.gc_probability=1
session.gc_divisor     =1000
session.gc_maxlifetime=1440
session.bug_compat_42=0
session.bug_compat_warn=1
session.referer_check=
session.entropy_length=0
session.entropy_file=
session.cache_limiter=nocache
session.cache_expire=180
session.use_trans_sid=Off
session.hash_function=0
session.hash_bits_per_character=5
url_rewriter.tags="a=href,area=href,frame=src,input=src,form=<span style="text-decoration:underline;"><em><span style="color:#ff0000; text-decoration: underline;">fakeentry</span></em></span>"
session属性

  session是基于cookie实现的,session-id 存储在cookie中,所以 这个session-id的属性决定了session的属性。

  配置项中有对应设置  

    session.cookie_life = 0;     //有效期(默认浏览器关闭)

    session.cookie_path = '/';  //默认跟路径

    session.cookie_domain = ; //有效域名

    session.cookie_secure = ; //是否安全传输 HTTPS

    session.cookie_httponly = ; //是否只http传输

  推荐使用  session_set_cookie_params(expire, path, domain, secure, httponly); 来设置这些属性

  以上是对于终端session_id属性的设置 接下来看看服务器端配置

  session_save_path   //session数据存储路径

  session_name = PHPSESSID; //保存在cookie中sessionid的键

  session_start = 0; //是否自动开启session

  session_use_trans_sid ;//是否开启自动传递SID 功能

  session_use_only_cookie = 1; //是否只依赖cookie传递SID

     

  session.gc_maxlifetime = 1440;  //session数据及文件生存周期 24分钟后视为垃圾

  session.gc_probability = 1;  

  session.gc_dirisor = 100;     

  //以上两个配置组合成了session的垃圾回收机制回收的概率,默认100次请求触发1次垃圾回收。session垃圾回收机制是惰性删除 过期之后不会马上删除而是等待回收概率的触发。

  session_save_handler = files; // session默认的保存介质 文件

 

posted @ 2022-03-09 17:15  chenjianwen  阅读(335)  评论(0编辑  收藏  举报