我正在使用zend framwork中的web应用程序并在其中实现登录和注销编码。身份验证适配器运行良好。 问题是,在身份验证和检查身份后,它会在地址栏中显示正确的重定向网址,但页面会显示错误而不是显示视图
这里是错误
致命错误:C:\ Users \ amrit \ Zend \ workspaces \ DefaultWorkspace7 \ webDeveloper \ library \ Zend \中的session.auto-start或session_start()已启动带有消息'session的未捕获异常'Zend_Session_Exception'第462行的Session.php
Zend_Session_Exception:session已经由第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;
}
答案 0 :(得分:5)
当使用zend_tool创建项目时,它会将以下行添加到application / configs / application.ini文件中:
resources.session.save_path = APPLICATION_PATH "/../data/session"
检查此路径是否存在且应用程序是否可写。否则,Zf将使用此虚假消息向您发送此异常。
答案 1 :(得分:3)
有一个big discussion about this on the German XING forums last year。其中一个结果是一个快速而肮脏的修复,它只是用这行代码在Bootstrap中启动一个会话:
Zend_Session::start();
在我看来,这远不是一个真正的解决方案,但如果您的大多数页面无论如何都需要会话,那么额外的开销是可以接受的。但是如果你只需要一个模块或项目部分的会话,你真的应该采用Xdebug方式。
答案 2 :(得分:1)
Zend_Session_Exception:会话已由 session.auto-start
启动
因此,请尝试检查您的php设置并关闭session.auto-start。
但如果情况并非如此,那么在您的代码中尝试检查会话开始的原因以及由哪个组件启动。可能是你使用了第三方的东西。
带有跟踪的Xdebug将帮助您了解会话的开始位置和人员。
答案 3 :(得分:1)
可能不是你的情况,但是当你试图将你的会话保存到没有创建的db表时,会抛出相同的错误消息。
答案 4 :(得分:0)
当您尝试将会话处理到redis / couchbase时,也会发生这种情况。将session.save_handler检查到php.ini