session_start () вызывает проблемы в CodeIgniter 3.0

У меня проблема с Библиотека аутентификации CAS в CI3. В 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.phpA 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?

Большое спасибо.

1

Решение

Это только косвенно связано с функциями сеанса. Обновите свой php.ini с часовым поясом:

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

Другие решения

После исправления вашего часового пояса, как предложено @Jan,

Я считаю, что это может решить вашу проблему, вы видите по умолчанию ваш output_buffering выключен
И вы пытаетесь начать сеанс до аутентификации CAS

session_start()

Теперь поворачивая output_buffering ВКЛ, как в

ob_start()
session_start();

Вы включаете буферизацию и, следовательно, задерживаете отправку Заголовки HTTP который может сделать CAS Работа.

Эти OB являются наращиваемыми, поэтому не забудьте

ob_end_flush()

Когда вы закончите, используя их.

Дать ему шанс!

0