1

我写信是想看看你们中是否有人以前遇到过这个问题,并有机会了解为什么会发生在我身上。

这就是故事。

我在 Zend Framework v. 1.8 之前开发了许多 ZF 应用程序,然后我停止了大约 18 个月。现在我不得不开始一个新项目,我决定再次使用 Zend Framework。

在我的本地服务器上,我安装了 1.11.3 版本,所以我没有下载最新版本。

在将 Zend_Application 与 Bootstrap.php 文件一起使用之前,我曾经启动会话,将会话选项放在我的 config.ini 文件中,然后将它们加载到 Zend_Session 实例中,如下所示:

配置文件

sessions.name = NAME
sessions.use_only_cookies = 1
sessions.save_path = APPLICATION_PATH "/../tmp/sessions"
sessions.strict = on
sessions.remember_me_seconds = 1800

index.php(进入公共网络服务器目录)在启动应用程序之前:

Globals::startSession();

具有各种有用方法的自定义 Globals 类:

    class Globals
    {
            static public function startSession()
            {
            $sessions_conf = self::getConfig()->sessions;
            Zend_Session::setOptions($sessions_conf->toArray(););
            Zend_Session::start();
            }
    }

这一直工作得很好,启用我的会话(与 Zend_Session_Namespace 一起使用)并将会话文件存储在 save_path 中。

使用 Zend_Application 手册告诉只需将会话选项存储在“部分”资源下的 application.ini 文件中,Zend_Session 将自动配置...

我是这样做的:

; SESSIONS
resources.session.name = NAME
resources.session.use_only_cookies = 1
resources.session.save_path = APPLICATION_PATH "/../tmp/sessions"
resources.session.strict = on
resources.session.remember_me_seconds = 1800

它没有用。所以我尝试使用(不是同时!) Bootstrap.php 文件中的 _initSession() 和 _initForceSession() 方法,将它们放在类的开头并将代码写入其中:

$this->bootstrap('session');

但是会话从来没有工作过,数据没有存储在http请求之间,会话文件也没有写入save_path......

请任何人告诉我这是否是正常行为(也许我在某处遗漏了某些东西......)?

显然,我解决了重新实现旧方法的问题(并且效果很好),但我想学习如何正确使用它。

提前致谢。

4

2 回答 2

1

这应该是打开它并且它可以工作的情况,可能会让它变得容易。

我认为您在 application.ini 中设置选项的方式可能有问题:

; SESSIONS
resources.session.name = NAME
resources.session.name.use_only_cookies = 1
resources.session.name.save_path = APPLICATION_PATH "/../tmp/sessions"
resources.session.name.strict = on
resources.session.name.remember_me_seconds = 1800

根据参考手册

要设置会话配置选项,请包含基本名称(“会话”之后的名称部分)作为传递给 Zend_Session::setOptions() 的数组的键。

正确设置选项后,引导程序 _initSession() 应该可以正常工作。

public function _initSession()
{
Zend_Session::start();
}

PS 我一直使用 Zend_Session_Namespace 但很少处理全局会话。

于 2012-05-23T04:19:36.693 回答
0

在你的 Bootstrap.php 添加

public function _initSession()
{
Zend_Session::start();
}

会话选项可以在 application.ini 中设置

于 2012-05-22T15:56:35.170 回答