我在Windows Server 2012 R2的Wamp64安装(PHP Ver 5.6.19,Apache 2.4.18)中使用Codeigniter 3.0.1。 当我上线时:
$autoload['libraries'] = array('session');
在autoload.php
中,启动应用程序时出现以下错误:
ini_set()会话处于活动状态您不能更改会话模块的 此时是ini设置。文件名:libraries / Session.php行 号码:313
如果我从autoload.php中删除该行,并将以下行放入实际使用会话数据的控制器的构造函数中:
$this->load->library("Session")
我遇到同样的错误,但是只有当我启动其中一个控制器时。
我已经检查了关于stackoverflow的多个问题的答案:
这些答案都不能解决我的问题。
会话信息正在写到服务器上的C:\temp
。我看到在启动首先加载会话库的控制器时已创建文件,因此Web服务器似乎具有对C:\temp
文件夹的写访问权。
另一个有趣的事情是,我在测试服务器(Windows 7,PHP版本5.6.32)上的安装没有问题
有人可以提供任何建议吗?谢谢!
更多信息:这是从2.x升级到3.0。我确实删除了\ system子文件夹,并将其替换为V3 \ system文件夹。
答案 0 :(得分:0)
找到了。
问题出在Codeigniter外部的一个Ajax库(Sijax)实例化了该类的实例,以便可以通过Ajax调用这些方法。 new(class)触发再次加载Session类,该类经过初始化并尝试再次创建会话。
我删除了Session类的自动加载,并将其加载到需要它的类中,在调用加载器之前先检查该类是否已经存在。