我想对codeigniter“files”会话驱动程序使用相同的目录(对于2个项目)。两个项目都在同一台服务器上。
项目1保存路径设置
$config['sess_save_path'] = APPPATH.'session_data';
项目2保存路径设置
$config['sess_save_path'] = $_SERVER['DOCUMENT_ROOT'].'/project1/application/session_data';
这在本地工作,但在生产服务器中不起作用。那有什么不对吗?我的“session_data”目录权限是“755”。 777测试但无法正常工作
答案 0 :(得分:0)
将您的会话存储在数据库中,并对两个项目使用相同的数据库。
Codeiniter 2 +:
$config['sess_use_database'] = TRUE;
$config['sess_table_name'] = 'ci_sessions';
Codeiniter 3 +:
$config['sess_driver'] = 'database';
$config['sess_save_path'] = 'ci_sessions';
Codeigniter 2 MySQL:
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`)
);
Codeigniter 3 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`)
);
确保两个项目的 $ config ['encryption_key'] 相同。
答案 1 :(得分:0)
简单地为config.php中的两个文件写入相同的值
$['encryption_key'] = 'ci_sesion';
$config['sess_cookie_name'] = 'ci_session';
$config['csrf_token_name'] = 'csrf_test_name';
$config['csrf_cookie_name'] = 'csrf_cookie_name';
我做了我的输出,就像使用相同的会话从一个项目移动到另一个项目。
假设您需要创建两个具有不同会话的不同项目,然后更改上面给定变量的值。