致命:错误 - 会话已由session.auto-start或session_start()启动

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了致命:错误 - 会话已由session.auto-start或session_start()启动相关的知识,希望对你有一定的参考价值。

我正在使用zend框架中的web应用程序并在其中实现登录和注销编码。身份验证适配器运行良好。问题是,在身份验证和检查身份后,它会在地址栏中显示正确的重定向URL,但页面会显示错误而不是显示视图

这是错误 致命错误:C: Users amrit Zend workspaces DefaultWorkspace7 webDeveloper library Zend Session.php中的消息'session已经由session.auto-start或session_start()启动了未捕获的异常'Zend_Session_Exception'在第462行

Zend_Session_Exception:会话已由第462行的C: Users TranceServe Zend workspaces DefaultWorkspace7 webDeveloper library Zend Session.php中的session.auto-start或session_start()启动 当我点击刷新时,它显示正确的视图。注销代码运行良好。

这是我的zend代码

public function adminloginAction ()
{
    $login = new Admin_Form_Login();
    $login->setAction("adminlogin");
    $login->setMethod("POST");
    if (isset($_SESSION)) {
        echo ("start");
      } else {
        echo ("not started");
    }
    if ($this->_request->isPost() && $login->isValid($_POST)) {
        $adapter = new webDeveloper_Auth_StaffAdapter(
        $this->getRequest()->getParam("email"), 
        ($this->getRequest()->getParam("pwd")));
        $result = Zend_Auth::getInstance()->authenticate($adapter);
        if (Zend_Auth::getInstance()->hasIdentity()) {
           $this->_redirector->gotoUrl('/admin/index');
        } else {
            $this->_redirector->gotoUrl('/admin/adminauthentication/adminlogin');
        }
    }
    $this->view->form = $login;
}
答案

嗯......它已经告诉你们所有人:

Zend_Session_Exception:会话已由session.auto-start启动

因此,请尝试检查您的php设置并关闭session.auto-start。

但如果情况并非如此,那么在您的代码中尝试检查会话开始的原因以及由哪个组件启动。可能是你使用了一些第三方的东西。

带有跟踪的Xdebug将帮助您了解启动会话的位置和人员。

另一答案

当zend_tool用于创建项目时,它将以下行添加到application / configs / application.ini文件中:

resources.session.save_path = APPLICATION_PATH "/../data/session"

检查此路径是否存在且应用程序是否可写。否则,Zf将使用此伪造消息向您发送此异常。

另一答案

有一个big discussion about this on the German XING forums last year。其中一个结果是一个快速而又脏的修复,只需使用以下代码行启动Bootstrap中的会话:

Zend_Session::start();

在我看来,它远非真正的解决方案,但如果大多数页面都需要会话,那么额外的开销是可以接受的。但是如果你只需要一些模块或项目部分的会话,你真的应该采用Xdebug方式。

另一答案

可能它不是你的情况,但是当你尝试将会话保存到db表中时会抛出相同的错误消息,而db表是未创建的。

另一答案

当您尝试将会话处理到redis / couchbase时会发生这种情况,并将session.save_handler检查到php.ini中

以上是关于致命:错误 - 会话已由session.auto-start或session_start()启动的主要内容,如果未能解决你的问题,请参考以下文章

Zend Framework 应用程序中的“会话已启动....”异常

无法启动会话:已由 PHP 启动(设置了 $_SESSION)。 500 内部服务器错误 - RuntimeException

ORA-00603: ORACLE 服务器会话因致命错误而终止 (急)

PHP会话控制之session_start

回话处理程序(17)

为啥数据库经此会话中的活动事务已由另外一个会话提交或终止