У меня проблема с Библиотека аутентификации 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?
Большое спасибо.
Это только косвенно связано с функциями сеанса. Обновите свой php.ini
с часовым поясом:
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = Europe/Berlin
После исправления вашего часового пояса, как предложено @Jan,
Я считаю, что это может решить вашу проблему, вы видите по умолчанию ваш output_buffering выключен
И вы пытаетесь начать сеанс до аутентификации CAS
session_start()
Теперь поворачивая output_buffering ВКЛ, как в
ob_start()
session_start();
Вы включаете буферизацию и, следовательно, задерживаете отправку Заголовки HTTP который может сделать CAS Работа.
Эти OB являются наращиваемыми, поэтому не забудьте
ob_end_flush()
Когда вы закончите, используя их.
Дать ему шанс!