Codeigniter会话在Live Server上不起作用

时间:2015-12-15 05:11:47

标签: codeigniter

当打开codeigniter项目localhost时,它们正常工作并在服务器中打开,然后出现无效路径错误

  

遇到PHP错误

     

严重性:警告

     

消息:mkdir():路径无效

     

文件名:drivers / Session_files_driver.php

     

行号:117

     

回溯:

     

文件:/Library/Server/Web/Data/Sites/garden_worx/index.php专线:292   功能:require_once

错误2

  

遇到未捕获的异常

     

类型:异常

     

消息:会话:已配置的保存路径''不是目录,不是   存在或不能创建。

     

文件名:   /Library/Server/Web/Data/Sites/garden_worx/system/libraries/Session/drivers/Session_files_driver.php

     

行号:119

     

回溯:

     

文件:/Library/Server/Web/Data/Sites/garden_worx/index.php专线:292   功能:require_once

错误3

  

遇到PHP错误

     

严重性:警告

     

消息:fopen(6d898f163e36616cef220426dad109225a66f74a):未能   开放流:权限被拒绝

     

文件名:drivers / Session_files_driver.php

     

行号:156

     

回溯:

8 个答案:

答案 0 :(得分:10)

在codeigniter 3版本中,您可以使用文件或数据库(如果是文件),确保您创建了您希望会话路径设置的文件夹和chmod 700

我使用缓存文件夹来存储文件会话

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

应用程序中的自动加载会话> config>自动装载

$autoload['libraries'] = array('session');
  

注意:确保控制器的所有文件名类名,   模型,库具有首字母大写示例文件名Welcome.phpclass Welcome extends CI_Controller {}

Codeigniter doc 2和3 http://www.codeigniter.com/docs

Codeigniter 3会话http://www.codeigniter.com/user_guide/libraries/sessions.html

Codeigniter 2会话:http://www.codeigniter.com/userguide2/libraries/sessions.html

您还可能需要在config.php

上有一个encryption_key
$config['encryption_key'] = 'pXeQY2733rR560MrwJy40OL4WaSGmr5A';

http://randomkeygen.com/

答案 1 :(得分:9)

这对你真的很有帮助,它也节省了我的一天:)

你的config.php中的

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

类似的问题 session error in codeigniter?

答案 2 :(得分:1)

只需在application -> config -> config.php

中更改此内容即可
$config['sess_save_path'] = NULL;

$config['sess_save_path'] = FCPATH.'ci_sessions';

它将在您的Root中创建一个目录。 希望你的问题能解决......

由于

答案 3 :(得分:0)

这对我有用

$config['sess_driver'] = 'files';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;
$config['sess_save_path'] = sys_get_temp_dir();
$config['sess_match_ip'] = TRUE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE;

答案 4 :(得分:0)

你也可以把

output_buffering = On

在根

上的php.ini文件中

答案 5 :(得分:0)

将“ NULL”更改为“ / tmp”或服务器的临时文件夹路径

该行现在应显示为:

$config['sess_save_path'] = '/tmp';

答案 6 :(得分:-1)

在autoload.php文件中添加“会话”解决了我的问题

$ autoload ['libraries'] = array('form_validation','session');

答案 7 :(得分:-2)

这项工作对我来说

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