session_start()导致CodeIgniter 3.0

时间:2016-01-29 12:33:16

标签: php codeigniter session authentication cas

我在CI3中 CAS身份验证库时遇到问题。在CI2.x中工作得很好但是在CI3中,会话已经重新设计,并且它似乎在这个库中存在问题。

这是我得到的错误:

A PHP Error was encountered

Severity: Runtime Notice

Message: session_start() [function.session-start]: It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Paris' for '1.0/no DST' instead

Filename: CAS/Client.php



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

这是我的 config.php 设置:

$config['sess_driver'] = 'database';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;
$config['sess_save_path'] = 'ci_sessions';
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE;

请注意,我使用名为“ci_sessions”的表格。在我的数据库中存储会话,如CI3用户手册中所述。它工作得很好但是一旦我加载了CAS库,我就会在session_start()行中得到上一个错误。

CAS库额外信息 https://github.com/eliasdorneles/code-igniter-cas-library 有人编写了一个代码,可以轻松地将phpCAS集成到Codeigniter 2.X中,但它不再保留,也不再更新为CI3。

对我来说,必须使用CAS身份验证方法,有关如何解决此错误或使用其他替代CAS客户端的任何想法?

非常感谢。

2 个答案:

答案 0 :(得分:0)

这只是间接连接到会话功能。使用时区更新您的php.ini

[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = Europe/Berlin

答案 1 :(得分:0)

在修复你的时区后,@ Jan建议,

我相信这可以解决您的问题,默认情况下您会看到 output_buffering 已关闭 并且您正尝试在CAS身份验证之前启动会话

session_start() 

现在将 output_buffering 设为ON,如

ob_start()
session_start();

启用缓冲,因此延迟发送 HTTP标头,这可能会使 CAS 工作。

这些OB是可堆叠的,所以不要忘记

ob_end_flush()

完成后使用它们。

试一试!