Fatal error: Uncaught exception
‘Zend_Session_Exception’ with message
‘session has already been started by
session.auto-start or session_start()’
in
/www/htdocs/w00a1ed7/autospin/redaktion/library/Zend/Session.PHP:462Stack trace:
#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 in /www/htdocs/w00a1ed7/autospin/redaktion/library/Zend/Session.PHP
on line 462
我使用Zend_Auth和我的本地服务器,它的工作正常,但在生产服务器上,我得到上述错误,但不是每次.
我已经检查了.htaccess文件中的session.autostart设置为0.
感谢您的回答,但我不会在任何地方使用session_start().只与ZF一起工作
我在共享服务器上有这个问题,在我的本地服务器脚本工作完美.
受保护的$user;
public function init() { if(!Zend_Auth::getInstance()->hasIdentity()) { $this->_redirect('auth/login'); }else { $this->user = Zend_Auth::getInstance()->getIdentity(); } }
我已经尝试只在indexAction中设置tis代码,这样其他的操作就不必篡改Auth …但仍然有问题.
我有办法设置一个Action来不检查会话或者这样的事情吗?
贝斯特问候
问题是在启动会话之前必须调用Zend_Session :: start().但是,因为session.autostart是0(btw这是在PHP.ini不是.htaccess),你可能已经写了session_start();某处.您不能这样做,因为ZF希望完全控制会话,即您不应该直接访问全局会话变量.
要解决它,搜索您的代码文件的session_start()和
>删除所有的事情,但一个.要注意是否已经启动,请设置error_reporting(E_ALL | E_STRICT);
用Zend_Session :: start()替换它;在所有地方
如果找不到所有的事件,找到一个session_start();这使您的Zend_Auth :: getInstance() – > hasIdentity()解决问题,并使用以下代码片段解决问题
try { Zend_Session::start(); } catch(Zend_Session_Exception $e) { session_start(); }
如果您在整个应用程序中使用ZF,我将与2)