【问题标题】:cakephp Session->write problem in linuxcakephp Session-> 在 linux 中写入问题
【发布时间】:2010-11-10 14:29:54
【问题描述】:

我对 cakephp 的 Session->write 方法有疑问。

如果我设置像 $_SESSION['..'] 这样的值,我就可以将其读回。但是如果我使用 write 方法,它就不起作用了。

我的问题和这里一样:http://www.nabble.com/Session-problem-td16684956.html

相同的代码在 windows 中可以运行,但在我迁移到 linux 后它无法运行。

原因是什么权限问题? (但我已完全授予蛋糕应用程序目录的 rw 权限)。

代码示例:在链接中:http://www.nabble.com/Session-problem-td16684956.html

  • 配置::write('Session.save', 'php');
  • 配置::write('Session.cookie', 'CAKEPHP');
  • 配置::write('Session.start', true);
  • 配置::write('Session.checkAgent', false);
  • 配置::write('Security.level', 'medium');

蛋糕版本:1.2.3.8166

【问题讨论】:

  • 代码示例和会话配置很高兴看到.. CakePHP 版本也是。
  • 代码示例:与链接中相同:nabble.com/Session-problem-td16684956.htmlConfigure::write('Session.save', 'php');配置::write('Session.cookie', 'CAKEPHP');配置::write('Session.start', true);配置::write('Session.checkAgent', false);配置::write('Security.level', 'medium');蛋糕版本:1.2.3.8166

标签: cakephp


【解决方案1】:

一些确保不是你的步骤:

  • 清除 /app/tmp 中的缓存
  • 检查并再次检查您的 /app/tmp 是否可递归地在世界范围内写入(这意味着内部所有文件夹的 drwxrwxrwx)
  • 使用Firebug检查您的会话cookie,可能有问题

最后但同样重要的是,尝试将您的 session persistence 移动到您的数据库(请参阅:Session.save),只是为了测试一下,您永远不知道会找到什么。

如果你尝试所有这些,希望你能找到一些东西。

【讨论】:

    【解决方案2】:

    您还应该尝试使用 Cache::read 和 Cache::write

    if (($session = Cache::read('session')) === false) 
    {
       $session = 'some values';
       Cache::write('session', $session);
    } 
    

    首先,它会尝试初始化 Cache::read。如果返回 false,则 Cache::write 将参与在会话中存储值。

    【讨论】:

      【解决方案3】:

      普拉布,

      虽然我怀疑 Configure::write() 调用有时会正确设置会话信息(至少它看起来像它可能工作),但 Cake 约定 (又名 CakeWay) 是使用 Session 助手。我相信它默认包含在所有 Cake 控制器中;如果没有,您可以随时声明您的控制器:

      class UsersController extends AppController {
       ...
       var $helpers = array( 'Session', ... )
       ...
      }
      

      然后,当您想将信息写入会话时,只需调用:

      $this->Session->write( 'checkAgent', false );
      

      要读回值,请使用:

      $this->Session->read( 'checkAgent');
      

      有关会话助手的更多信息,请查看 CakeBook @http://book.cakephp.org/view/484/Session

      【讨论】:

      • 您混淆了会话组件和会话助手:在控制器中使用会话组件,而在视图中使用会话助手。 Session 组件和 Session 助手都是自动加载的,所以不需要定义它们。
      猜你喜欢
      • 2011-12-19
      • 1970-01-01
      • 2015-08-14
      • 2014-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多