php - Zend 抛出 "Session already started"异常,当我还没有开始 session 时,会出现什么情况?

标签 php zend-framework session

Fatal error: Uncaught exception 'Zend_Session_Exception' with message 'session has already been started by session.auto-start or session_start()' in /usr/include/ZendFramework-1.11.3/library/Zend/Session.php on line 462

每次重新加载都会发生。我做过的事情:

  • 确保 session.autostart=0 在我的 php.ini 中
  • 在我的整个应用程序中搜索了对 session_start() 的调用,但没有
  • 将以下 session 配置信息放入我的 config.ini 中:

    resources.session.save_path = APPLICATION_PATH "/../data/session"
    resources.session.use_only_cookies = true
    resources.session.remember_me_seconds = 864000
    
  • 从我的 config.ini 中删除了上面的内容,没有什么不同

  • 多次重启apache
  • 最后我只使用 Zend_Session_Namespace(),它在我的 Controller 的 init() 函数中初始化。

我每次都会遇到这个错误。是什么赋予了?还有什么我没查的?我的应用程序(在 Zend 库之外)中唯一存在单词“ session ”的地方是在这个 Controller 中:

<?php

class ContributeController extends Zend_Controller_Action
{
    private $_session;

    private function getSession() {
        return $this->_session;
    }

    public function init()
    {
        $this->_session = new Zend_Session_Namespace('contribute');
    }

    public function indexAction()
    {
        // action body
    }

    public function addAction() {
        $this->getSession()->form = new Application_Form_Contribute_Add_Main();
        $this->view->form = $this->getSession()->form;
    }

    public function importAction() {}


}

?>

这是对我的 php.ini 的 ^session 的 grep 搜索:

session.save_handler = files
session.use_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = /
session.cookie_domain =
session.cookie_httponly = 
session.serialize_handler = php
session.gc_divisor     = 100
session.gc_maxlifetime = 1440
session.bug_compat_42 = 1
session.bug_compat_warn = 1
session.referer_check =
session.entropy_length = 0
session.entropy_file =
session.cache_limiter = nocache
session.cache_expire = 180
session.use_trans_sid = 0
session.hash_function = 0
session.hash_bits_per_character = 4

session.auto_start,明显关闭。

为什么我每次都会收到这个错误?这是怎么回事?

编辑 目前看来,这是由于当我试图存储该表单时试图在 session 中存储太多内容造成的。当我重写我的代码来存储一个非常简单的数组来代替表格的结构时,错误消失了并且没有返回。如果它再次出现,我可能会回到这里,但我不确定它是否不会出现。

最佳答案

检查您的 application.ini 中定义的 session 数据文件夹是否存在且可写:如果不是这种情况,则此虚假消息会引发相同的异常。

关于php - Zend 抛出 "Session already started"异常,当我还没有开始 session 时,会出现什么情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6802441/

相关文章:

php - 获取位于子目录的页面中的drupal用户ID

java - 从 Filter 中的 ServletRequest 获取 session 时出现问题

php - 通过单击按钮填充 PHP 数组

php - 更新后获取以前的值 - MySql

php - 模板引擎与 Zend Framework 的优缺点

c# - ASP.net session 登录

php - 取消链接和 SplFileObject

javascript - 上传到服务器后 ajaxFileUpload 语法错误

php - 从多对多表返回单个记录

php - Zend_Di(Zend 2.0 beta)和 Zend Framework 1.11