我有一台服务器,其中包含许多使用CodeIgniter作为框架的PHP应用程序。一切都运行得很好。
但是,在使用Memcached作为会话存储(我之前使用默认文件来存储会话)之后,我的一个应用程序反应奇怪。虽然其他人运行良好,但我的应用程序很少。重定向到主页后会话丢失。
对于调试,我使用这样的语句
class Home extends CI_Controller {
public function __construct()
{
parent::__construct();
// Your own constructor code
var_dump($_SESSION); die;
$this->mysession->check_no_session();
$this->mysession->check_session_expires();
}
public function index()
{
$this->libs->check_main_template('welcome_message','');
}
}
转储显示会话中没有存储任何内容:array(0) { }
但在同一服务器的其他应用程序中,当我进行调试时,会话数据显示完美。
我使用模板构建这些应用程序,这意味着所有配置大多是相同的,所以我必须看到在OK和错误应用程序之间识别/比较什么配置/文件以发现可能导致此异常的配置?
有什么想法吗?在此先感谢您的帮助。
答案 0 :(得分:0)
好的,我想我找到了根本原因。
显然我的一位同事在应用程序index.php
上设置了超出memcache限制的指令,如下所示:
define('SESSION_TIME_OUT', x);
ini_set('session.gc_maxlifetime', SESSION_TIME_OUT);
ini_set('session.cache_expire', SESSION_TIME_OUT);
session_start();
用适当的号码替换x
(memcache只接受2,592,000或30天以下的号码),然后问题不再存在。