我在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客户端的任何想法?
非常感谢。
答案 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()
完成后使用它们。
试一试!