我在cakephp中使用会话组件时遇到问题。 在不同服务器上的开发站点上,它们在整个站点中运行良好。
在新服务器上上传最终版本后,似乎会话无法在某些控制器中启动。这种控制器只发生在两个控制器上,但在这些控制器上似乎没有什么不同 - 除了这两个控制器只使用自定义文件上传器组件这一事实。尝试禁用此功能并且没有任何更改。
该网站是一个电子商务系统,主要是在尝试将项目添加到购物篮时出现问题,这些问题存储在会话中。这个会议仍然是空白,而在开发网站上工作的魅力。
我也使用auth组件登录/注销,虽然这两个区域不需要登录到功能,但是它们会在加载时切换到注销 - 然后自动切换回来当访问网站的任何其他区域时。 auth和session组件加载到appcontroller中。
谢谢!
答案 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');
之类的内容AppController的beforeFilter()
。你尝试阅读的密钥应该无关紧要,'foo'应该足以启动你的CakePHP会话。