Codeigniter не может загружать библиотеки

Сначала я думал, что у меня проблема с загрузкой библиотек из-за использования модульных расширений внутри Codeigniter.

Однако я обнаружил, что даже при чистой установке codeigniter я не могу загрузить такие библиотеки, как Session library или даже библиотека миграции.

Я всегда получаю похожие сообщения об ошибках, обычно связанные с загрузкой файлов.

Вот мое сообщение об ошибке при использовании библиотеки сеансов.

Примечание: если я не использую библиотеки, все работает нормально.

Ошибка:

Обнаружена ошибка PHP
Серьезность: Предупреждение
Сообщение: mkdir() [function.mkdir]: неверный аргумент
Имя файла: drivers/Session_files_driver.php
Номер строки: 117

Backtrace:
Файл: index.php Строка: 301 Функция: require_once

Обнаружено неперехваченное исключение
Тип: Исключение
Сообщение: Сессия: Настроенный путь сохранения '' не является каталогом, не существует или не может быть создан.

Имя файла:\system\library\Session\drivers\Session_files_driver.php
Номер строки: 119

Backtrace:
Файл: 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 ответ для получения дополнительной информации.

Ответы

Ответ 1

Сообщение: Сессия: Настроенный путь сохранения '' не является каталогом, не существует или не может быть создан.

$config['sess_save_path'] = NULL;

Попробуйте установить это.

Для меня это работает $ config ['sess_save_path'] = '/tmp';

Ответ 2

Рабочий код;

$config['sess_save_path'] = sys_get_temp_dir();

Это позволяет выполнить script.

Ответ 3

Этот код работает на моем 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

Ответ 4

Step1 : open config.php and create a session folder with 0755 permission.
Step2 : update below code variable 
$config['sess_save_path'] =  __DIR__.'/session'; 

Ответ 5

Я также столкнулся с этой проблемой сегодня.

Спасибо Sparky и Trojka, установив, что моя конфигурация использует базу данных, а файл сделал мое приложение CI отлично работающим, как на моем локальном сервере, так и вживую.

Вот как:

$config['sess_driver'] = 'database';       // changed from file
$config['sess_save_path'] = 'ci_sessions'; // table name

Существует MySQL для создания таблицы в ссылке Trojka.

Ответ 6

Из документов 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/';