Php Zend_会话:在将任何输出发送到浏览器之前,必须启动会话
我以前遇到过这个问题,但我不记得如何解决它。我已经创建了一个“裸骨”无法获得任何更简单的控制器,我只是尝试向浏览器回显一些内容,我收到以下消息:Php Zend_会话:在将任何输出发送到浏览器之前,必须启动会话,php,zend-framework,zend-session,Php,Zend Framework,Zend Session,我以前遇到过这个问题,但我不记得如何解决它。我已经创建了一个“裸骨”无法获得任何更简单的控制器,我只是尝试向浏览器回显一些内容,我收到以下消息: Fatal error: Uncaught exception 'Zend_Session_Exception' with message 'Session must be started before any output has been sent to the browser ... 这是我的整个控制器。它显示“成功”,但也显示错误消息。我怎样
Fatal error: Uncaught exception 'Zend_Session_Exception' with message 'Session must be started before any output has been sent to the browser ...
这是我的整个控制器。它显示“成功”,但也显示错误消息。我怎样才能使错误消息静音,这样我就可以简单地向浏览器回显某些内容
<?php
class CacheController extends Zend_Controller_Action
{
public function clearAction()
{
$this->_helper->layout->disableLayout();
$this->_helper->viewRenderer->setNoRender();
try {
$result = Model_Cache::emptyCache(array('foobar'=>1));
if ($result['status'] == true) {
echo 'Success';
} else {
echo 'Error: ' . $result['message'];
}
} catch (Exception $e) {
echo 'Error: ' . $e->getMessage();
}
}
}
从内存来看,此错误通常是由于非PHP代码在预期的会话初始化之前启动输出造成的。通常是由于不必要的?>标记后出现空格或回车。这是我要检查的第一件事。错误听起来像是说,在数据发送到浏览器之前,您没有启动Zend_会话。通常,我会在我的引导程序中粘贴一些类似的东西来启动Zend_会话
protected function _initSessions()
{
Zend_Session::start();
}
这将使您进入Zend框架。如果您在框架之外使用此工具,只需在回显或打印任何内容之前使用PHP脚本顶部附近的内行代码即可
希望有帮助 会话可能是通过application.ini或php.ini会话自动启动的吗?如果使用ide,请尝试搜索空间
有时使用空格搜索会有帮助。由于某种原因,我试图在应用程序完成引导后在index.php文件中设置一些会话变量。我不确定这之前为什么没有引起问题,但当我从index.php中删除它时,它起了作用
$userSession = new Zend_Session_Namespace('Auth');
$userSession->forcePasswordChange = false;
我发现了一篇关于这个问题的类似帖子: 我也遇到了同样的问题,但是在上一个链接中提出的解决方案对我来说不起作用,所以在一些测试之后,我发现Zend_类会话中有一个变量
/**
* Whether or not Zend_Session is being used with unit tests
*
* @internal
* @var bool
*/
public static $_unitTestEnabled = false;
如果将此变量设置为true,则phpunit执行不会出现任何问题。至少我的情况就是这样
希望这个帮助我遇到了同样的问题,我的问题是我在屏幕上发出了一个严格的警告 调试这个问题的一个好方法是使用ob_start和ob_get_内容
希望有帮助我收到了相同的错误消息。但只有一个动作。问题是由控制器动作中的这两条线引起的:
$customersModel = new Default_Model_DbTable_Customers();
$this->view->customers = $customersModel->fetchAll();
在我的数据库中有6000多名客户。因此,推送大量记录以供查看是不好的。尝试使用会话时,需要使用上面列出的代码启动Zend_会话。我想你是故意开了个会。但如果不是这样的话,就像你在这里说的那样移除也同样有效。