Серьезность: Предупреждение
Сообщение: mkdir (): действует ограничение open_basedir. File () находится за пределами разрешенного пути (путей): (/ home / thelazyppl /: / home / thelazyppl: / tmp: / usr / local / lib / php /)
Имя файла: drivers / Session_files_drivers.php
Корневая папка сайта — это сайт WordPress, поэтому я создал поддомен для сайта Codeigniter с именем «Bazaar» в корневой папке. Я уже настроил base_url в config.php и WordPress htaccess, чтобы разрешить папку «Bazaar», но все еще ничего не работает.
Мой хост не позволяет модификациям файла php.ini отключить open_basedir, есть ли другой способ разрешить это или я сделал что-то не так в процессе?
Ваша установка CodeIgniter пытается сохранить файлы своего сеанса в недоступном для записи месте. Поскольку вы пользуетесь виртуальным хостингом, я бы порекомендовал хранить данные вашего сеанса в базе данных.
Исходя из имени файла, вызвавшего ошибку, похоже, что вы находитесь на CodeIgniter 3. Есть некоторая информация в гид пользователя о том, как правильно его настроить.
Чтобы продолжить использовать драйвер файлов, вам нужно будет изменить содержимое $config['sess_save_path']
переменная, чтобы указать на что-то вроде /tmp
или же /home/thelazyppl/tmp
(после того, как вы создали tmp
папка в вашем FTP за пределами вашего www
или же public_html
каталог).
Лучшим вариантом будет использовать драйвер базы данных, подробности которого чуть ниже.
Если у вас возникли эти проблемы в CodeIgniter 2, вам определенно необходимо включить базу данных. Для этого вы бы изменили $config['sess_use_database']
возможность TRUE
а затем запустите SQL, показанный в CodeIgniter 2 руководство пользователя.
После прочтения официальная документация
В config.php
Вам нужно изменить
ОТ
$config['sess_driver'] = 'files';
$config['sess_save_path'] = NULL;
К
$config['sess_driver'] = 'database';
$config['sess_save_path'] = 'ci_sessions';
а также вам нужно создать таблицу по имени ci_sessions
в случае, если он не существует.
Чтобы использовать драйвер сеанса базы данных, вы также должны создать эту таблицу, о которой мы уже упоминали, а затем установить ее в качестве $config['sess_save_path']
значение. Например, если вы хотите использовать «ci_sessions» в качестве имени таблицы, вы должны сделать это:
Заметка
Если вы обновили предыдущую версию CodeIgniter и у вас не настроен параметр «sess_save_path», то библиотека Session будет искать старый параметр «sess_table_name» и использовать его вместо этого. Пожалуйста, не полагайтесь на это поведение, так как оно будет удалено в будущем.
И затем, конечно, создать таблицу базы данных …
Для MySQL:
CREATE TABLE IF NOT EXISTS `ci_sessions` (
`id` varchar(128) NOT NULL,
`ip_address` varchar(45) NOT NULL,
`timestamp` int(10) unsigned DEFAULT 0 NOT NULL,
`data` blob NOT NULL,
KEY `ci_sessions_timestamp` (`timestamp`)
);
Для PostgreSQL:
CREATE TABLE "ci_sessions" (
"id" varchar(128) NOT NULL,
"ip_address" varchar(45) NOT NULL,
"timestamp" bigint DEFAULT 0 NOT NULL,
"data" text DEFAULT '' NOT NULL
);
CREATE INDEX "ci_sessions_timestamp" ON "ci_sessions" ("timestamp");
Вам также нужно будет добавить ПЕРВИЧНЫЙ КЛЮЧ в зависимости от настроек «sess_match_ip». Приведенные ниже примеры работают как на MySQL, так и на PostgreSQL:
// When sess_match_ip = TRUE
ALTER TABLE ci_sessions ADD PRIMARY KEY (id, ip_address);
// When sess_match_ip = FALSE
ALTER TABLE ci_sessions ADD PRIMARY KEY (id);
// To drop a previously created primary key (use when changing the setting)
ALTER TABLE ci_sessions DROP PRIMARY KEY;