PHP错误;session_start():-失败:没有这样的文件或目录";


PHP Error, "session_start(): - failed: No such file or directory"

我在我的网站上安装了一个名为Fusion CMS的CMS。

然而,当我安装它/将它移动到文件夹(例如,www.example.com/cms/)时,我会遇到这个烦人的错误,cms中的模块无法正常工作!

A PHP Error was encountered
Severity: Warning
Message: session_start(): open(../tmp'sess_mpnr120ag1dg5mfr1mon7dd6m1, O_RDWR) failed: No such file or directory (2)
Filename: libraries/Session.php
Line Number: 33

但是,如果我安装它/将它移回根文件夹(www.example.com/),它将不会出现任何错误。但我需要把它放在文件夹上!这个CMS使用CI(CodeIgniter),如果它有任何相关性的话,因为我在谷歌上搜索了类似的主题,有些人说它可能是CI.

我该怎么解决这个问题?

编辑:

Wolfgang1983,这是我的发现。

$config['sess_cookie_name']     = 'cisession';
$config['sess_expiration']      = 18000;
$config['sess_expire_on_close'] = FALSE;
$config['sess_encrypt_cookie']  = TRUE;
$config['sess_use_database']    = FALSE;
$config['sess_table_name']      = 'ci_sessions';
$config['sess_match_ip']        = TRUE;
$config['sess_match_useragent'] = FALSE;
$config['sess_time_to_update']  = 18000;

确保您正确设置了配置。尝试更改您的配置,如下所示:

$config['sess_cookie_name']     = 'cisession';
$config['sess_expiration']      = 18000;
$config['sess_expire_on_close'] = FALSE;
$config['sess_encrypt_cookie']  = TRUE;
$config['sess_use_database']    = FALSE;
$config['sess_table_name']      = 'ci_sessions';
$config['sess_match_ip']        = TRUE;
$config['sess_match_useragent'] = FALSE;
$config['sess_time_to_update']  = 18000;

相反,把它改成这样:

$config['sess_cookie_name']     = 'ci_session'; // name of your session
$config['sess_expiration']      = 7200; // the session expiration last ,you can set it to zero for no expiration
$config['sess_expire_on_close'] = FALSE; //
$config['sess_encrypt_cookie']  = FALSE;
$config['sess_use_database']    = FALSE;
$config['sess_table_name']      = 'ci_sessions';
$config['sess_match_ip']        = FALSE;
$config['sess_match_useragent'] = TRUE;
$config['sess_time_to_update']  = 300;

我希望这对你有帮助。有关更多信息,请尝试搜索CodeIgniter手册。

在config.php上,请确保已正确设置路径。

我已经在那里的系统目录中设置了我的,因为我使用BASEPATH。你可以在你的应用程序文件夹APPPATH中设置它。

确保您有$config['encryption_key'] = 'some_secure_key';

$config['sess_save_path'] = BASEPATH . 'cache/sessions/';

更新

会话配置

$config['sess_driver'] = 'files';
$config['sess_cookie_name'] = 'cookie_monster';
$config['sess_expiration'] = 1440;
$config['sess_save_path'] = BASEPATH . 'cache/sessions/';
$config['sess_match_ip'] = TRUE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = TRUE;

更新

由于您的会话看起来像codeigniter 2

看起来像codeigniter 2你的使用然后需要配置你的会话,就像codeigniters 2用户指南中所说的那样http://www.codeigniter.com/userguide2/libraries/sessions.html

$config['sess_cookie_name']     = 'cisession';
$config['sess_expiration']      = 18000;
$config['sess_expire_on_close'] = FALSE;
$config['sess_encrypt_cookie']  = TRUE;
$config['sess_use_database']    = TRUE; // FALSE to TRUE
$config['sess_table_name']      = 'ci_sessions';
$config['sess_match_ip']        = TRUE;
$config['sess_match_useragent'] = FALSE;
$config['sess_time_to_update']  = 18000;

从用户指南将其插入会话表

CREATE TABLE IF NOT EXISTS  `ci_sessions` (
    session_id varchar(40) DEFAULT '0' NOT NULL,
    ip_address varchar(45) DEFAULT '0' NOT NULL,
    user_agent varchar(120) NOT NULL,
    last_activity int(10) unsigned DEFAULT 0 NOT NULL,
    user_data text NOT NULL,
    PRIMARY KEY (session_id),
    KEY `last_activity_idx` (`last_activity`)
);

(代表OP发布)

我的朋友上了电视,几分钟后,他把tmp文件夹移到了网站的根目录下,解决了这个问题。根据我的朋友"tmp文件夹必须始终是CMS后面的一个文件夹"。