正在尝试在 Codeigniter 中加载会话库。这似乎显然是正确的,但实际上不起作用。这是配置文件的一部分:
$config['sess_driver'] = 'database';
$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;
同样,ncryption key变量已经设置好了。此外,CI 3 文档无法为我提供解决此问题的方法。
我尝试过:
- 将"sess_save_path"变量设置为"ci_sessions"
- 检查文件夹权限
- 检查表"ci_sessions"是否存在
- 使用自动加载器类
- 使用大写 S 的类名
这有点奇怪,但配置说:
/*
| -------------------------------------------------------------------
| Auto-load Libraries
| -------------------------------------------------------------------
| These are the classes located in the system/www folder
| or in your application/www folder.
|
| Prototype:
|
| $autoload['www'] = array('database', 'email', 'session');
|
| You can also supply an alternative library name to be assigned
| in the controller:
|
| $autoload['www'] = array('user_agent' => 'ua');
*/
这是自动加载机的代码:
// Load www
if (isset($autoload['www']) && count($autoload['www']) > 0)
{
// Load the database driver.
if (in_array('database', $autoload['www']))
{
$this->database();
$autoload['www'] = array_diff($autoload['www'], array('database'));
}
// Load all other www
foreach ($autoload['www'] as $item)
{
$this->library($item);
}
}
以下是您应该尝试的操作列表:
-
确保在 autload.php:
$autoload['libraries'] = array('session');
中加载会话库 -
确保您的加密密钥设置为cofing.php:
$config['encryption_key'] = 'anything_here'
-
确保数据库表名为
ci_sessions
,并且sess_save_path设置为该名称:$config['sess_save_path'] = "ci_sessions"
-
如果您使用的是 Unix/Linux,请确保使用大写字母加载库:
$autoload['libraries'] = array('Session');
-
如果没有任何效果,请检查是否从 http://www.codeigniter.com/download 下载并安装正确的 CI3 文件
你需要这样做
config/autoload.php
文件,并确保在代码点火器 3 中加载会话。
$autoload['drivers'] = array('session');
确保正确安装了 ci3,并且没有丢失任何库文件和类。我喜欢在安装 ci 时使用 git 或作曲家来跟踪更改,或者您可以获取 zip 或 .gz 并将其提取以供使用。