Zend Framework应用程序中的php – “会话已经启动…”异常

前端之家收集整理的这篇文章主要介绍了Zend Framework应用程序中的php – “会话已经启动…”异常前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
尝试加载Zend Framework应用程序时收到此错误

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:462

Stack 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一起工作

我在共享服务器上有这个问题,在我的本地服务器脚本工作完美.

我用这个代码使用INIT函数

受保护的$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_Auth尝试启动一个新的会话,因为Zend_Session :: start()尚未被调用.

问题是在启动会话之前必须调用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)

猜你在找的PHP相关文章