Первоначально я думал, что у меня возникла проблема с загрузкой библиотек из-за использования модульных расширений внутри Codeigniter.
Однако я обнаружил, что даже с чистой установкой codeigniter я не могу загружать библиотеки, такие как Session library
или даже библиотека миграции.
Я всегда получаю похожие сообщения об ошибках, как правило, с загрузкой файлов.
Вот мое сообщение об ошибке, которое я использую при использовании библиотеки сеансов.
Примечание. Если я не использую библиотеки, все работает нормально.
Ошибка:
A PHP Error was encountered Severity: Warning Message: mkdir() [function.mkdir]: Invalid argument Filename: drivers/Session_files_driver.php Line Number: 117 Backtrace: File: index.php Line: 301 Function: require_once An uncaught Exception was encountered Type: Exception Message: Session: Configured save path '' is not a directory, doesn't exist or cannot be created. Filename: \system\libraries\Session\drivers\Session_files_driver.php Line Number: 119 Backtrace: File: index.php Line: 301 Function: 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;
EDIT :
Решено.
Теперь важно использовать документацию 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'] = sys_get_temp_dir();
Это позволяет выполнить скрипт.
Сегодня я столкнулся с этой проблемой.
Спасибо 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/';
Step1 : open config.php and create a session folder with 0755 permission. Step2 : update below code variable $config['sess_save_path'] = __DIR__.'/session';