Я вижу 2 вопроса в этом вопросе:
- не может записать информацию о сеансе на диск с помощью CI
файловый драйвер
и
- не удалось получить информацию о сеансе
1. записать информацию о сеансе на диск
config.php в строке 344 говорит:
sess_save_path '
Место для сохранения сеансов, в зависимости от драйвера.
Для драйвера 'files' это путь к каталогу, доступному для записи.
ВНИМАНИЕ: Поддерживаются только абсолютные пути!
ВАЖНО: ТРЕБУЕТСЯ указать правильный путь сохранения!
Поэтому вам нужно установить его в значение false (ничего не сохраняется) или использовать абсолютный путь. Чтобы сделать эту работу одинаковой для разработки и производства , вы можете использовать массив PHP $_SERVER
и использовать его в своем config.php, например:
$config['sess_save_path'] = $_SERVER['DOCUMENT_ROOT'].'/application/cache/session/';
наконец, вам нужно убедиться, что указанный выше каталог доступен для записи, но только у вас есть доступ к этому каталогу (на рабочем сервере).
P.S .: вы видите, что в $ _SERVER, используя эту строку:
<?php echo'<pre>';print_r($_SERVER); ?>
2. получить информацию о сеансе
- убедитесь, что вы не уничтожили сеанс в предыдущей функции
- помните об изменении $ config ['cookie_domain'], $ config ['cookie_path'],
$ config ['cookie_secure'] может влиять на сеансы:
этот параметр работает в моей настройке:
$config['sess_driver'] = 'files';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;
$config['sess_save_path'] = $_SERVER['DOCUMENT_ROOT'].'/application/cache/session/';
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE;
$config['cookie_prefix'] = '';
$config['cookie_domain'] = '';
$config['cookie_path'] = '/';
$config['cookie_secure'] = FALSE;
$config['cookie_httponly'] = FALSE;
Если ничего из этого не работает, вы все равно можете попробовать переопределить автозагрузку, поместив этот конструктор в ваш User
контроллер:
public function __construct(){
parent::__construct();
$this->load->library('session');
}