CodeIgniter本地Session失效求助:调用addview()跳转错误页
CodeIgniter Session 问题解决方案
一、代码层面修复
- 统一Session操作逻辑
你在login方法里用原生PHP的$_SESSION['name']存值,但addview和logout用的是CodeIgniter的Session类方法,两种方式混用会导致读取异常。把login里的存值代码改成框架标准写法:
// 替换原有的 $_SESSION['name']= $this->input->post('name'); $this->session->set_userdata('name', $this->input->post('name'));
- 确认Session自动加载配置
检查config/autoload.php里是否正确加载Session库:
$autoload['libraries'] = array('session');
同时核对config/config.php的Session配置,确保参数正确:
$config['sess_driver'] = 'files'; // 本地环境优先用files驱动 $config['sess_cookie_name'] = 'ci_session'; $config['sess_expiration'] = 7200; $config['sess_save_path'] = APPPATH . 'cache/sessions/'; // 确保该目录存在且有读写权限 $config['sess_match_ip'] = FALSE; $config['sess_time_to_update'] = 300; $config['sess_regenerate_destroy'] = FALSE;
二、本地环境全局Session问题排查
如果本地所有CodeIgniter项目都有Session异常,大概率是环境配置问题:
- 检查PHP Session配置
打开php.ini文件,确认以下参数:
session.save_handler = files session.save_path = "/tmp" // 指定一个有读写权限的目录 session.cookie_httponly = On session.use_cookies = On session.use_only_cookies = On
修改后重启Web服务器(Apache/Nginx)。
- 修复目录权限
确保CodeIgniter的cache/sessions/目录,或者PHPsession.save_path指定的目录,拥有Web服务器进程(如www-data、apache)的读写权限:
chmod -R 700 /目标目录路径 chown -R www-data:www-data /目标目录路径
- 调整Cookie配置
本地用localhost时,config/config.php里的Cookie参数要对应设置:
$config['cookie_domain'] = ''; // 本地留空即可 $config['cookie_path'] = '/'; $config['cookie_secure'] = FALSE; // HTTP环境设为FALSE $config['cookie_httponly'] = TRUE;
三、调试验证
在addview方法里添加调试代码,查看Session实际数据:
public function addview(){ // 打印所有Session数据,排查是否存在name字段 var_dump($this->session->all_userdata()); if(!$this->session->userdata('name')){ $this->load->view('error'); }else{ $this->load->view('headeradmin'); $this->load->view('addevent'); } }
内容的提问来源于stack exchange,提问作者Samyama
相关产品推荐
相关产品推荐

