尝试加载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):
包括('/ 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 ...,但仍然有问题。
难道有一种方法可以设置为不检查会话或类似的东西吗?
致以诚挚的问候
参考方案
它就是它所说的。 Zend_Auth
尝试开始新的会话,因为尚未调用Zend_Session::start()
。
问题是必须在会话开始之前调用Zend_Session::start()
。但是,由于session.autostart为0(顺便说一句,它在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 session header()重定向后丢失 - php这是我第一次尝试创建会话。另外,成功登录后,我使用header()函数重定向页面,但是在重定向的页面上,我不再有会话。有代码:建立工作阶段:function userLogin($user){ session_start(); $_SESSION['username'] = $user; header("Location: /~…
PHP Memcached会话突然失效 - phpsession.save_handler = memcached session.save_path = "127.0.0.1:11211" session.gc_maxlifetime = 86400 其余的标准。我希望自上次用户访问该页面以来,该会话至少可以保留86400秒,即,如果我在5分钟后启动了一个会话并访问了该页面,则该会话应…
视图助手中的Zend重定向 - php嗨,我有以下脚本可在视图帮助器中重定向<?php class Application_View_Helper_ExistUserRev extends Zend_View_Helper_Abstract{ public function existUserRev($params,$user) { $businessReviewMapper = new …
json_encode网址失败 - php有人在this bug附近吗?echo json_encode(array('url'=>'/foo/bar')); {"url":"\/foo\/bar"} 我使用Zend_Json and Zend_Json_Expr以便我甚至可以在js对象中获取回调函数-但我无法获得…
PHP getallheaders替代 - php我正在尝试从服务器上的apache切换到nginx。唯一的问题是我在PHP脚本中使用的getallheaders()函数,该函数不适用于Nginx。我已经尝试过用户在getallheaders函数上的php站点上提供的注释,但这并不返回所有请求标头。请告诉我如何解决这个问题。我真的想切换到Nginx。 参考方案 您仍然可以使用它,但是您必须像这里一样重新定义…