У меня есть настройка инфраструктуры Codeigniter, которую я перемещаю между настройками нескольких доменов в качестве отправной точки по умолчанию. Это дает мне следующую ошибку. То же самое, когда я добавил чистую установку CI3 и добавил информацию о базе данных, а также следующие автозагрузки:
$autoload['libraries'] = array('database', 'session', 'user_agent', 'upload');
$autoload['helper'] = array('form', 'url');
Я попытался удалить библиотеку 'session',, и ошибка исчезла.
Ниже вы видите ошибку:
A PHP Error was encountered
Severity: Warning
Message: mkdir(): Invalid path
Filename: drivers/Session_files_driver.php
Line Number: 136
Backtrace:
File: /customers/9/0/3/***.***/httpd.www/index.php
Line: 315
Function: require_once
A PHP Error was encountered
Severity: Warning
Message: Cannot modify header information - headers already sent by (output started at /customers/9/0/3/***.***/httpd.www/system/core/Exceptions.php:271)
Filename: core/Common.php
Line Number: 564
Backtrace:
An uncaught Exception was encountered
Type: Exception
Message: Session: Configured save path '' is not a directory, doesn't exist or cannot be created.
Filename: /customers/9/0/3/***.***/httpd.www/system/libraries/Session/drivers/Session_files_driver.php
Line Number: 138
Backtrace:
File: /customers/9/0/3/***.***/httpd.www/index.php
Line: 315
Function: require_once
Я скрыл доменное имя. Извините за это, но я не думаю, что это крайне важно.
Вот мой конфиг для сессий:
$config['sess_driver'] = 'files';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;
$config['sess_save_path'] = NULL;
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE;
также помните: если вы добавите какой-либо пробел/строку перед стартовым тегом php (<?php) в контроллере, он может отображать ошибку такого типа: «Невозможно изменить информацию заголовка — заголовки уже отправлены (вывод начался в /customers/9/0/ 3/***.***/httpd.www/system/core/Exceptions.php:271) ".
и это: stackoverflow.com/questions/8028957/…, надеюсь, это поможет...
Просматривая обратную трассировку (кстати, да, можно скрыть имя домена), кажется, что либо ваша библиотека сеансов неправильно настроена, либо каталог, в котором вы собираетесь хранить журналы, не существует или недоступен для записи. Не могли бы вы опубликовать конфигурацию сеанса?
@Vickel Ваше первое предложение решило мою проблему с mkdir()! Большое спасибо! Но как мне отметить ваш комментарий как правильный? Или вам нужно дать правильный ответ, возможно, для этого?





Если вы используете драйвер хранилища файловых сессий Codeigniter /default), вам нужно помнить, что он поддерживает только абсолютные пути для $config['sess_save_path'].
в config.php указано:
| The location to save sessions to, driver dependent.
|
| For the 'files' driver, it's a path to a writable directory.
| WARNING: Only absolute paths are supported!
|
| For the 'database' driver, it's a table name.
| Please read up the manual for the format with other session drivers.
|
| IMPORTANT: You are REQUIRED to set a valid save path!
в зависимости от вашей среды используйте их:
mkdir /<path to your application directory>/sessions/
chmod 0700 /<path to your application directory>/sessions/
chown www-data /<path to your application directory>/sessions/
или
$config['sess_save_path'] = sys_get_temp_dir();
//php function which returns the directory path used for temporary files
подробнее о Драйвер файлов CI-сессий
P.S. взгляните на Session_files_driver.php (в вашем каталоге system/session/driver). Там вы видите использование mkdir в строке 136: if ( ! mkdir($save_path, 0700, TRUE))=>>through error if dir is not writable).
У меня не было $config['sess_save_path'] = sys_get_temp_dir(); установить в моем файле конфигурации. После добавления заработало как надо! Спасибо!
пожалуйста, проверьте это сообщение: stackoverflow.com/questions/31042456/…