Zend_Session:必须在将任何输出发送到浏览器之前启动会话

And*_*rew 3 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 ...
Run Code Online (Sandbox Code Playgroud)

这是我的整个控制器.它显示"成功",但它也显示错误消息.我怎样才能使该错误消息静音,以便我可以简单地向浏览器回应一些内容?

<?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();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Mal*_*nic 7

从内存中,这个错误通常是由于非PHP代码在预期(和会话初始化)之前启动输出.通常是由于在不必要的?>标签之后空白或回车.这是我要检查的第一件事.


gok*_*jou 5

该错误听起来像是在说您没有在将数据发送到浏览器之前启动Zend_Session。通常,我在引导程序中粘贴以下内容以启动Zend_Session。

protected function _initSessions()
{
    Zend_Session::start();
}
Run Code Online (Sandbox Code Playgroud)

那应该使您进入Zend框架。如果您在框架之外使用此工具,则在回显或打印任何内容之前,请在PHP脚本顶部附近使用该内代码行。

希望有帮助!