致命错误:升级到Codeigniter 3后的session_start()

时间:2016-01-27 11:04:19

标签: php codeigniter session cas

我从 Codeigniter 2升级到3 ,现在我的 CAS库出现了此错误:

A PHP Error was encountered

Severity: Error

Message: session_start() [function.session-start]: Failed to initialize storage module: user (path: C:\Windows\Temp)

Filename: CAS/Client.php

Line Number: 3588

Backtrace:

它与会话有关,我猜CI3.0处理它与CI2.0不同。

我在 config.php

中有以下内容
$config['sess_driver'] = 'files';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;
$config['sess_save_path'] = NULL;
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE

任何帮助都将受到高度赞赏。感谢。

我做了一个干净的CI3.0.4安装,似乎问题是CAS身份验证库: https://github.com/eliasdorneles/code-igniter-cas-library

它适用于CI 2.x,但不适用于CI3.0。如果我只是不加载CAS模块,一切都可以正常运行(我没有设置会话等问题)。但是,一旦我加载CAS, CAS / Client.php 上的行session_start()就会出现问题。有什么想法吗?

5 个答案:

答案 0 :(得分:7)

您尚未配置sess_save_path确保文件夹chmod 700

$config['sess_driver'] = 'files';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;
$config['sess_save_path'] = FCPATH . 'application/cache/';
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE;

自动加载会话

$autoload['libraries'] = array('session');

答案 1 :(得分:1)

您可以尝试以下代码,它适用于我

// before session_start();

ini_set('session.save_handler', 'files'); 

// make sure it is writeable

ini_set('session.save_path', 'c:\temp');   

session_start();

答案 2 :(得分:0)

我有同样的问题。 我通过编辑库/ Cas.php(第55行)并添加false参数来修复它,以防止phpCAS启动会话本身 phpCAS :: client(CAS_VERSION_2_0,$ cas_url [' host'],$ cas_url [' port'],$ cas_url ['路径'], false );

答案 3 :(得分:0)

我已经解决了这个问题。打开phpCAS文件:CAS / Client.php。 转到约3580行(在"私人函数_renameSession")。

修改

session_start();

if (! isset($_SESSION)) {
    session_start();
}

请原谅我的英语。

答案 4 :(得分:0)

$config['sess_driver'] = 'files';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;
$config['sess_save_path'] = '/tmp';
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE;

sess_save_path服务器节路径更改为/tmp

$config['sess_save_path'] = '/tmp';