二级目录下的SESSION共享问题

  今天碰到个在二级目录下SESSION共享的问题,百度了下,类似的问题好像都是二级域名下的session共享,而且是要实现共享,但我现在的问题的是禁止session共享,因为二级目录下默认情况就是session共享。出现这个问题的原因是,在主站下部署了多个子站,放在了二级目录下(没有使用二级域名的原因是证书的问题,二级目录可以共用主站的证书)。查来查去,最后还是解决的这个问题,方法比较简单,但是没有看到别人问这个问题与,在此记录下,方便其他碰到这个问题的程序猿们有个参考的方法。

  首先来了解下php.ini中有关session和cookie的几个设置。

  session.cookie_domain:session的作用域

  session.cookie_path:session的作用和路径,php.ini中,session.cookie_path设置过于严格。比如设置为:session.cookie_path = /hjaa/也就是说只允许根域名下面的hjaa目录和子目录才能使用session(更确切来讲,如果session.cookie_domain设置 了A域名,则表示A域名下的hjaa目录和子目录才允许使用session)。   解决办法:将php.ini中的session.cookie_path设置为“/”(不含双引号)或者你认为的更加宽松的安全设置,比如: session.cookie_path = /

  session.save_path:session的存储路径

  session.save_handler:(没发现有使用这个的地方)

  了解了这些,就知道怎么解决问题了,将子目录的session放在子目录下的根目录下(默认是放在主站根目录下的),只用一句代码即可搞定(放在子目录中的根目录下的index.php文件中):

  

  这是在window下的,其中/shop是二级目录的名字。

  注意,ini_set("session.cookie_domain",'session.com');必须放在session_start()之前;否则不会生效。

  PS:1.和这个相关的二级域名下的session共享问题解决方案,参见http://huangqiqing123.iteye.com/blog/1874073   或   http://www.cnblogs.com/linzhenjie/archive/2013/01/23/2872541.html

    2.ini_set()函数修改php.ini配置参考http://www.php.net/manual/zh/ini.list.php

原文地址:https://www.cnblogs.com/phpCHAIN/p/3146157.html