tp5.0 报错session_start(): Cannot send session cache limiter
一个小错误坑,做个笔记,结果就是将 php.ini里的session.auto_start 设为1
起因:
作用户登录验证时,用captcha_check检查验证码,报错
session_start(): Cannot send session cache limiter,
以前用过tp5框架,不记得报过这种错,且之前的项目captcha现在能正常验证,比对两者的session和captcha的配置,没什么问题,于是网上各种搜索,
1、将config文件里session设置
'auto_start' => true
但下载下来默认就是true
2、因会话存在缓存限制,在php.ini里设
always_populate_raw_post_data = -1
( 由于认为框架里已经设置auto_start为true,且别的项目能正常跑,就没设php.ini的,尴尬)
3、需要开启session_start(),但一般用原生$_SESSION时用到,我这里用的是tp内置Session方法,且也引用里think\Session,大小写问题也注意了,
4、还有一些文件utf8设置问题
5、还有一些权限不够什么的,也试了
。。。
后面不知道怎么想的,就把config里 ‘auto_start’ =>false了,发现不报错了,但是验证码怎么验证都false,
就开始看源码,找到check方法里 $ this->seKey,由于我并没有在config里额外定义seKey,所以不存在与默认设置不同的问题,
在进行 $ secode = Session::get($key, ‘’) 变量调试获取时,直接报错session_start(),由于获取不到该值,所以会判flase结果,所以验证码都fail。
再一试,所有Session的操作都报错,(之前把’auto_start’关闭了,能不错吗),重新打开auto_start,还是报同样的错,最后想起将php.ini里session相关的
session.auto_start=1
居然好了,兜兜转转,小惊喜