CodeIgniter版本3.x:加载“会话”库报告ini_set警告

时间:2018-09-23 17:50:06

标签: php codeigniter-3

我在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的多个问题的答案:

  • 您的php代码中是否包含session_start():否-我已经搜索了此项目中包含的每段代码,并且在任何地方都没有session_start()
  • 您是否在php.ini中将session.auto_start设置为等于0(零)-是

这些答案都不能解决我的问题。

会话信息正在写到服务器上的C:\temp。我看到在启动首先加载会话库的控制器时已创建文件,因此Web服务器似乎具有对C:\temp文件夹的写访问权。

另一个有趣的事情是,我在测试服务器(Windows 7,PHP版本5.6.32)上的安装没有问题

有人可以提供任何建议吗?谢谢!

更多信息:这是从2.x升级到3.0。我确实删除了\ system子文件夹,并将其替换为V3 \ system文件夹。

1 个答案:

答案 0 :(得分:0)

找到了。

问题出在Codeigniter外部的一个Ajax库(Sijax)实例化了该类的实例,以便可以通过Ajax调用这些方法。 new(class)触发再次加载Session类,该类经过初始化并尝试再次创建会话。

我删除了Session类的自动加载,并将其加载到需要它的类中,在调用加载器之前先检查该类是否已经存在。