现场网站上的Cakephp Session错误

时间:2012-03-06 12:18:44

标签: session cakephp cakephp-2.0

我在cakephp中使用会话组件时遇到问题。 在不同服务器上的开发站点上,它们在整个站点中运行良好。

在新服务器上上传最终版本后,似乎会话无法在某些控制器中启动。这种控制器只发生在两个控制器上,但在这些控制器上似乎没有什么不同 - 除了这两个控制器只使用自定义文件上传器组件这一事实。尝试禁用此功能并且没有任何更改。

该网站是一个电子商务系统,主要是在尝试将项目添加到购物篮时出现问题,这些问题存储在会话中。这个会议仍然是空白,而在开发网站上工作的魅力。

我也使用auth组件登录/注销,虽然这两个区域不需要登录到功能,但是它们会在加载时切换到注销 - 然后自动切换回来当访问网站的任何其他区域时。 auth和session组件加载到appcontroller中。

谢谢!

2 个答案:

答案 0 :(得分:1)

我之前遇到过类似的问题,对我而言,我和@starlocke的印象相同,需要启动一些东西。在检查未定义session_start()之后,我使用了$_SESSION命令,而不是使用Cake的Session组件。例如:

if(!isset($_SESSION)) session_start();

这是放在AppController类的beforeFilter()方法中。

然后我还遇到了一个问题,它说它无法启动会话,因为已经输出到服务器,这是通过删除控制器内的任何关闭?>标签来解决的,因为php并不需要这些,并且在这种情况下停止发送到浏览器的任何不需要的输出。

进一步阅读php关闭标签:

答案 1 :(得分:0)

我的个人经验表明,CakePHP的会话独立于Apache + PHP会话。考虑到这一点,有必要采取一些措施来始终保证在您网站的工作流程中尽早实例化CakePHP会话(而不是通常的Apache + PHP会话),例如,在您的网站中添加$this->Session->read('foo');之类的内容AppControllerbeforeFilter()。你尝试阅读的密钥应该无关紧要,'foo'应该足以启动你的CakePHP会话。