尝试加载Zend Framework应用程序时收到此错误:
致命错误:未捕获的异常带有消息的“ Zend_Session_Exception”“会议已经由session.auto-start或session_start()'在/www/htdocs/w00a1ed7/autospin/redaktion/library/Zend/Session.php:462
堆栈跟踪:
#0 /www/htdocs/w00a1ed7/autospin/redaktion/library/Zend/Session/Namespace.php(143):Zend_Session :: start(true)
#1 /www/htdocs/w00a1ed7/autospin/redaktion/library/Zend/Auth/Storage/Session.php(87):Zend_Session_Namespace-> __ construct('Zend_Auth')
#2 /www/htdocs/w00a1ed7/autospin/redaktion/library/Zend/Auth.php(91):Zend_Auth_Storage_Session-> __ construct()
#3 /www/htdocs/w00a1ed7/autospin/redaktion/library/Zend/Auth.php(141):Zend_Auth-> getStorage()
#4 /www/htdocs/w00a1ed7/autospin/redaktion/application/layouts/scripts/layout.phtml(31):Zend_Auth-> hasIdentity()
#5 /www/htdocs/w00a1ed7/autospin/redaktion/library/Zend/View.php(108):include('/ www / htdocs / w00 ...')
#6 /www/htdocs/w00a1ed7/autospin/redaktion/library/Zend/View/Abstract.php(831):Zend_View-> _ run('/ www / htdocs / w00 ...')
#7 / www / htdocs / w00a1ed在/www/htdocs/w00a1ed7/autospin/redaktion/library/Zend/Session.php中在线462]
我在本地服务器上使用Zend_Auth
,并且运行良好,但在生产服务器上却出现了先前的错误,但并非每次都出现。
我已经检查session.autostart
文件中的0
设置为.htaccess
。
如何解决此错误?
谢谢您的回答,但我在任何地方都不使用session_start()。仅适用于ZF。
我仅在共享服务器上有此问题,在我的本地服务器脚本上工作正常。
我将INIT函数与此代码一起使用:
受保护的$ user;
public function init()
{
if(!Zend_Auth::getInstance()->hasIdentity())
{
$this->_redirect('auth/login');
}else
{
$this->user = Zend_Auth::getInstance()->getIdentity();
}
}
我已经准备尝试仅在indexAction中设置此代码,以便其他操作不必破解Auth ...,但仍然有问题。
是否有一种方法可以在Action中设置为不检查会话或类似的东西?
Beste问候
Zend_Session::start()
。但是,由于session.autostart为0(顺便说一句,它位于php.ini中,而不是
。htaccess中),因此您可能在某处写了session_start();
。不允许这样做,因为ZF希望完全控制会话,即您不应该直接访问全局会话变量。
session_start()
和其中一个删除所有发生的事件,只有一个。要通知它是否已经启动,请设置error_reporting(E_ALL|E_STRICT);
Zend_Session::start();
替换Zend_Auth::getInstance()->hasIdentity()
并迅速解决问题'>try {
Zend_Session::start();
} catch(Zend_Session_Exception $e) {
session_start();
}
如果您在整个应用程序中使用ZF,我会选择2)