Ответ 1
Сообщение: Сессия: Настроенный путь сохранения '' не является каталогом, не существует или не может быть создан.
$config['sess_save_path'] = NULL;
Попробуйте установить это.
Для меня это работает $ config ['sess_save_path'] = '/tmp';
Сначала я думал, что у меня проблема с загрузкой библиотек из-за использования модульных расширений внутри Codeigniter.
Однако я обнаружил, что даже при чистой установке codeigniter я не могу загрузить такие библиотеки, как Session library
или даже библиотека миграции.
Я всегда получаю похожие сообщения об ошибках, обычно связанные с загрузкой файлов.
Вот мое сообщение об ошибке при использовании библиотеки сеансов.
Примечание: если я не использую библиотеки, все работает нормально.
Ошибка:
Обнаружена ошибка PHP
Серьезность: Предупреждение
Сообщение: mkdir() [function.mkdir]: неверный аргумент
Имя файла: drivers/Session_files_driver.php
Номер строки: 117Backtrace:
Файл: index.php Строка: 301 Функция: require_onceОбнаружено неперехваченное исключение
Тип: Исключение
Сообщение: Сессия: Настроенный путь сохранения '' не является каталогом, не существует или не может быть создан.Имя файла:\system\library\Session\drivers\Session_files_driver.php
Номер строки: 119Backtrace:
Файл: index.php Строка: 301 Функция: require_once
Я чувствую, что это какая-то проблема с разрешениями, но использую ли я AMPPS, MAMP (Windows) или XAMP, я всегда получаю эту проблему.
У кого-нибудь есть какие-либо идеи
ОС: Windows 8.1
Вебсервер: AMPPS/MAMP (Windows)/XAMP - Все есть проблема.
Codeigniter: v3.0.0
Конфиг:
$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;
РЕДАКТИРОВАТЬ:
Решено.
Теперь важно использовать документацию CI3. При использовании метода базы данных для сеансов убедитесь, что вы используете обновленный SQL для создания таблицы.
CREATE TABLE IF NOT EXISTS 'ci_sessions' (
'id' varchar(40) NOT NULL,
'ip_address' varchar(45) NOT NULL,
'timestamp' int(10) unsigned DEFAULT 0 NOT NULL,
'data' blob NOT NULL,
PRIMARY KEY (id),
KEY 'ci_sessions_timestamp' ('timestamp')
);
Как нашел здесь. Я надеюсь, что это поможет любому с подобными проблемами.
Также для первоначальной проблемы, если вы используете драйвер files
убедитесь, что вы установили для $config['sess_save_path']
что-то вроде 'ci_sessions'
или где вы хотите сохранить. Пожалуйста, смотрите @Tpojka ответ для получения дополнительной информации.
Сообщение: Сессия: Настроенный путь сохранения '' не является каталогом, не существует или не может быть создан.
$config['sess_save_path'] = NULL;
Попробуйте установить это.
Для меня это работает $ config ['sess_save_path'] = '/tmp';
Рабочий код;
$config['sess_save_path'] = sys_get_temp_dir();
Это позволяет выполнить script.
Этот код работает на моем MACOS для ошибки сеанса:
Вам нужно добавить этот код в файл config.php
вам нужно заменить NULL
на sys_get_temp_dir()
$config['sess_save_path'] = sys_get_temp_dir();
Моя ошибка была:
Предупреждение: Uncaught Исключение: Сессия: Настроенный путь сохранения '' не является каталогом, не существует или не может быть создан. в /Library/WebServer/Documents/ci/fuse/system/libraries/Session/drivers/Session_files_driver.php:138 трассировки стека: # 0 [внутренняя функция]: CI_Session_files_driver-> open ('', 'ci_session') # 1/Library/WebServer/Documents/ci/fuse/system/libraries/Session/Session.php(143): session_start() # 2/Library/WebServer/Documents/ci/fuse/system/core/Loader.php(1281): CI_Session-> __ construct() # 3/Library/WebServer/Documents/ci/fuse/system/core/Loader.php(1174): CI_Loader-> _ ci_init_library ('Session', 'CI_', NULL, 'session ') # 4/Library/WebServer/Documents/ci/fuse/system/core/Loader.php(1037): CI_Loader-> _ ci_load_stock_library (' Сессия ',' Сессия /', NULL, NULL) # 5/Library/WebServer/Documents/ci/fuse/system/core/Loader.php(1082): CI_Loader-> _ ci_load_library ('Session', NULL, NULL) # 6/Library/WebServer/Documents/ci/fuse/system/core/Loader.php(218): CI_Loader-> _ ci_load_library ('Session', NULL, NULL) # 7/Library/WebServe в /Library/WebServer/Documents/ci/fuse/system/libraries/Session/drivers/Session_files_driver.php по линии 138
Неустранимая ошибка: session_start(): не удалось инициализировать модуль хранения: пользователь (путь:) в /Library/WebServer/Documents/ci/fuse/system/libraries/Session/Session.php в строке 143
Step1 : open config.php and create a session folder with 0755 permission.
Step2 : update below code variable
$config['sess_save_path'] = __DIR__.'/session';
Я также столкнулся с этой проблемой сегодня.
Спасибо Sparky и Trojka, установив, что моя конфигурация использует базу данных, а файл сделал мое приложение CI отлично работающим, как на моем локальном сервере, так и вживую.
Вот как:
$config['sess_driver'] = 'database'; // changed from file
$config['sess_save_path'] = 'ci_sessions'; // table name
Существует MySQL для создания таблицы в ссылке Trojka.
Из документов CI3: По умолчанию Драйвер файлов будет использоваться, когда сеанс инициализируется, поскольку он является самым безопасным выбором и, как ожидается, будет работать повсюду (практически у каждой среды есть файловая система).
Таким образом, свойство по умолчанию хорошо работает в среде Windows, но в системах Mac и Linux я столкнулся с подобными проблемами.
Вещь, которая работала для меня, не переключаясь на базу данных:
Шаг 1: создайте каталог сеанса с соответствующими разрешениями:
mkdir /<path to your application directory>/ci_sessions/
chmod 0700 /<path to your application directory>/ci_sessions/
chown _www /<path to your application directory>/ci_sessions/
Позаботьтесь о том, что имя пользователя apache изменяется как: www-data, _www, apache и т.д.
Шаг 2: Установите абсолютный путь для конфигурации sess_save_path: (Mine on Mac выглядел ниже)
$config['sess_save_path'] ='/Library/WebServer/Documents/App/ci_sessions/';