2012-03-06 26 views
0

我在使用cakephp中的会话组件时遇到问题。 当他们在不同的服务器上的开发站点上时,他们在整个站点工作良好。在活动网站上发生Cakephp会话错误

将最终版本上传到新服务器后,看起来会话不会在某些控制器中启动。只有在两个控制器上才会发生这种情况,但在这些控制器上似乎没有任何区别 - 除非可能只有这两个控制器正在使用自定义文件上传组件。试过禁用这个,没有任何改变。

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

我也使用auth组件登录/注销,尽管这两个区域不需要登录到函数,但是它们会导致它在加载时切换到注销状态 - 然后切换回来当网站的任何其他区域被访问时。身份验证和会话组件将加载到应用程序控制器中。

谢谢!

+0

有什么有趣的日志文件? – 2012-03-06 12:49:02

+0

任何时候都不会记录或显示任何错误,并且所有内容都可以继续工作,但篮子仍然空着... – Liam 2012-03-06 13:54:48

回答

1

我以前有过类似的问题,对我来说我和@starlocke的印象一样,那就是需要启动一些东西。在检查$_SESSION未定义之后,我使用了session_start()命令,而不是使用Cake的会话组件。例如:

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

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

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

在PHP结束标记延伸阅读:

0

我个人的经验表明,CakePHP的会话独立于Apache + PHP会话。考虑到这一点,它有助于采取一些措施,以保证CakePHP会话(而不是通常的Apache + PHP会话)在您的网站工作流程的早期实例化,例如,在您的网站的AppControllerbeforeFilter()内添加类似$this->Session->read('foo'); 。不管你尝试读什么键,'foo'都足以启动你的CakePHP会话。

+0

谢谢生病给我试一试 – Liam 2012-03-14 14:46:35

相关问题