错误提示信息如下
ini_set(): ini var: session.auto_start be forbidden on ACE /home/u1039/ace/workspace/php/appcode/webroot/htdocs/ThinkPHP/Common/functions.php 第 1236 行.
ini_get(): ini var: session.gc_maxlifetime be forbidden on ACE /home/u1039/ace/workspace/php/appcode/webroot/htdocs/ThinkPHP/Library/Think/Session/Driver/Db.class.php 第 45 行.
后台代码如下:
public function login(){
if(!IS_POST) halt('页面不存在');
$username=I('username');
$password=I('password','','md5');
$user=M('user')->where(array('username'=>$username))->find();
if(!$user||$password!=$user['password']){
$this->error('登陆失败');
}
//更新登陆信息
$date=array(
'id'=>$user['id'],
'logintime'=>time(),
'loginip'=>get_client_ip(),
);
M('user')->save($date);
//为session写入数据
session('uid',$user['id']);
session('username',$user['username']);
session('loginip',$user['loginip']);
session('logintime',date('Y-m-d H:i:s',$user['logintime']));
$this->redirect('Admin/Index/index');
}
}
跳转到后台主页之后session信息是空的,
框架是thinkphp 3.2.2
如何才能写入session.
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
根据您提供的错误信息和代码背景,您在使用ThinkPHP 3.2.2框架时遇到了关于session设置被禁止的问题。具体表现为ini_set()
和ini_get()
函数在尝试修改或获取session相关配置时提示被禁止。这通常是因为运行环境(如ACE)对这些配置项进行了限制,不允许在脚本中动态修改。针对您的情况,可以尝试以下步骤解决session写入问题:
ini_set()
。打开/home/u1039/ace/workspace/php/appcode/webroot/htdocs/ThinkPHP/Conf/config.php
,找到session配置部分,修改为使用数据库存储(假设数据库已正确配置):
// 数据库驱动的session存储
'SESSION_TYPE' => 'Db', // 使用Db类型
'SESSION_PREFIX' => 'think_', // session前缀
'SESSION_OPTIONS' => array(
'table' => '__session__', // 表名
'expire' => 3600, // 过期时间(秒)
),
确保数据库中有对应的session表结构,并且应用有相应的读写权限。
session.auto_start
和session.gc_maxlifetime
等参数已经按照应用需求预先设置好。ini_set()
尝试修改session配置。重点应放在确保ThinkPHP框架的session配置与环境兼容上。通过以上步骤,您应该能解决session无法写入的问题。如果问题依旧存在,建议进一步查看服务器日志,以获取更详细的错误信息进行排查。