【问题标题】:Cakephp Session error on live site实时站点上的 Cakephp 会话错误
【发布时间】:2012-03-23 22:10:30
【问题描述】:

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

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

该网站是一个电子商务系统,主要出现在尝试将商品添加到存储在会话中的购物篮时出现的问题。此会话保持空白,而在开发站点上却很有魅力。

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

谢谢!

【问题讨论】:

  • 日志文件中有什么有趣的地方吗?
  • 在任何时候都不会记录或显示任何错误,一切都会继续工作,但篮子仍然是空的......

标签: session cakephp cakephp-2.0


【解决方案1】:

我的个人经验表明,CakePHP 的会话独立于 Apache+PHP 会话。考虑到这一点,采取一些措施来始终保证在您网站的工作流程的早期实例化 CakePHP 会话(而不是通常的 Apache+PHP 会话)会有所帮助,例如,在您网站的 @987654321 中添加类似 $this->Session->read('foo'); 的内容@的beforeFilter()。您尝试读取什么键并不重要,“foo”应该足以启动您的 CakePHP 会话。

【讨论】:

    【解决方案2】:

    我之前也遇到过类似的问题,对我来说,我和@starlocke 的印象一样,就是需要开始一些事情。在检查了$_SESSION 没有定义之后,我没有使用Cake 的Session 组件,而是使用了session_start() 命令。例如:

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

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

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

    进一步阅读 php 结束标签:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 2014-07-19
      • 1970-01-01
      相关资源
      最近更新 更多