【问题标题】:Zend\Session\SessionManager and cookie_lifetimeZend\Session\SessionManager 和 cookie_lifetime
【发布时间】:2013-05-15 14:23:09
【问题描述】:

我看到 ZF2 会话和超时出现一些奇怪且令人沮丧的行为。

这是我用来设置会话的代码:

    $sessionConfig = new \Zend\Session\Config\StandardConfig();
    $sessionConfig->setOptions(array(
        'cache_expire' => 525949,
        'cookie_domain' => 'mydomain.com',
        'cookie_lifetime' => 31536000,
        'cookie_path' => '/',
        'cookie_secure' => TRUE,
        'gc_maxlifetime' => 31536000,
        'name' => 'mydomain',
        'remember_me_seconds' => 31536000,
        'use_cookies' => TRUE,
    ));

    $sessionManager = new \Zend\Session\SessionManager($sessionConfig);
    $sessionManager->rememberMe(31536000);
    $sessionManager->setSaveHandler(new \Zend\Session\SaveHandler\MongoDB($mongo, $options);
    $session = new \Zend\Session\Container('MY_SESSION', $sessionManager);

当我执行此代码时,会创建 cookie,但到期时间是会话结束。

如果我像这样更改代码:

    $sessionManager = new \Zend\Session\SessionManager();
    $sessionManager->rememberMe(31536000);
    $sessionManager->setConfig($sessionConfig);
    $session = new \Zend\Session\Container('MY_SESSION', $sessionManager);

cookie 被创建,有效期为一年后。

但是,会话仍然会在 30 分钟左右后过期,即使 cookie 仍然存在。

我想要的是让 cookie 和会话都持续一年。我如何在 ZF2 中做到这一点?

【问题讨论】:

  • 使用\Zend\Session\Config\SessionConfig,而不是StandardConfig
  • 当我使用具有与上述相同选项的 SessionConfig 时,不会写入 PHPSESSID cookie。我错过了什么?
  • 以上选项表示会话name of mydomain ?

标签: php zend-framework2 session-timeout


【解决方案1】:

看起来问题与 gc_maxlifetime 选项的处理有关。在 \Zend\Session\SaveHandler\MongoDB 中,这个值来自 PHP 配置,通过 ini_get('session.gc_maxlifetime');

我在 \Zend\Session\SessionManager 中没有看到调用 ini_set() 的任何地方。

我认为解决方案是执行以下操作之一:

  1. 编辑 php.ini 并全局设置值
  2. 编辑 .htaccess 并添加 php_value session.gc_maxlifetime
  3. 如果提供了 gc_maxlifetime 选项,则扩展 \Zend\Session\SessionManager 并添加一个调用 ini_set() 的新方法。

【讨论】:

  • ini_setSessionConfig 类调用,无需编辑任何内容,操作只需使用正确的类即可。
猜你喜欢
  • 1970-01-01
  • 2023-03-25
  • 1970-01-01
  • 1970-01-01
  • 2018-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-05
相关资源
最近更新 更多