You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

本地两个PHP(Codeigniter)应用账号同步登录登出问题如何解决?

问题解答

是否属于正常现象

该情况不属于正常现象,属于两个CodeIgniter应用的会话配置冲突导致的异常问题。

产生原因

CodeIgniter的会话默认配置对同域下部署的多个应用不做区分,本地部署时通常两个应用都使用localhost域名访问,触发了以下配置冲突:

  • 默认的会话Cookie名称完全相同,浏览器会将两个应用返回的会话Cookie识别为同一个,两个应用共享同一个会话ID
  • 如果使用文件存储会话,默认的会话文件存储路径为系统公共临时目录,相同会话ID会指向同一个会话存储文件
  • 两个应用只要对会话中存储的用户ID校验逻辑兼容,就会出现同一账号同时登录的情况;任意应用执行登出操作时,都会销毁共享的会话数据/清空共享的会话Cookie,直接导致另一个应用同步登出

修复方案

分别修改两个应用application/config/config.php文件中的会话相关配置,保证两个应用的会话配置完全独立:

  • 修改会话Cookie名称,两个应用设置不同的唯一值:
// 应用1配置
$config['sess_cookie_name'] = 'ci_session_app1';
// 应用2配置
$config['sess_cookie_name'] = 'ci_session_app2';
  • 若两个应用部署在同域名的不同子目录下,单独配置Cookie路径:
// 应用1部署在 /app1/ 目录时配置
$config['cookie_path'] = '/app1/';
// 应用2部署在 /app2/ 目录时配置
$config['cookie_path'] = '/app2/';
  • (可选)使用文件存储会话时,给每个应用配置独立的会话存储目录,提前创建对应目录并授予读写权限:
// 应用1配置
$config['sess_save_path'] = APPPATH . 'cache/session_app1/';
// 应用2配置
$config['sess_save_path'] = APPPATH . 'cache/session_app2/';

修改配置后清空两个应用的缓存和浏览器Cookie,重新测试即可恢复正常。


内容的提问来源于stack exchange,提问作者Mike Setyawan Mulyono

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 03:21:01