CodeIgniter 2设置自定义Session路径时出现Session错误求助
解决CodeIgniter 2中Session保存失败的问题
问题分析
警告信息显示PHP尝试读取系统默认Session路径/var/cpanel/php/sessions/ea-php56,但该路径不存在或无权限;同时你配置的自定义路径未生效,核心原因有两个:
- 你使用了CodeIgniter 3+的Session配置项(如
sess_driver),CI2不识别这些参数,导致配置无效 - 控制器中直接调用原生
session_start(),绕过了CI的Session管理机制,强制使用PHP默认配置
解决步骤
1. 修正CI2兼容的Session配置
替换你当前的配置为CodeIgniter 2支持的格式,删除CI2不识别的sess_driver和sess_regenerate_destroy项:
$config['sess_cookie_name'] = 'ci_session'; $config['sess_expiration'] = 7200; $config['sess_save_path'] = BASEPATH . 'ci_sessions/'; $config['sess_expire_on_close'] = FALSE; $config['sess_encrypt_cookie'] = FALSE; $config['sess_use_database'] = FALSE; $config['sess_match_ip'] = FALSE; $config['sess_match_useragent'] = TRUE; $config['sess_time_to_update'] = 900;
2. 移除原生session_start()调用
删除BI_Controller_Diganta.php第41行的session_start()代码,改用CI2的Session库初始化方式:
在控制器的构造方法或需要使用Session的位置加载库:
$this->load->library('session');
CI2会自动完成Session的启动和管理,无需手动调用原生方法。
3. 确保自定义Session目录权限正确
- 确认
BASEPATH/ci_sessions/目录已创建 - 设置目录权限为
755(允许web服务器读写),如果是cPanel环境,可通过文件管理器或SSH命令修改:
chmod 755 /your/codeigniter/path/ci_sessions/ chown your_cpanel_user:your_cpanel_user /your/codeigniter/path/ci_sessions/
4. 验证PHP默认Session路径(可选)
如果问题仍存在,创建phpinfo.php文件查看PHP默认配置:
<?php phpinfo(); ?>
访问该文件查找session.save_path,确认路径是否存在。若不存在,联系主机商修复或确保CI自定义路径配置完全生效。
内容的提问来源于stack exchange,提问作者Jone D Adam
相关产品推荐
相关产品推荐

