【问题标题】:Zend Session Fatal errorZend 会话致命错误
【发布时间】:2011-06-24 15:11:54
【问题描述】:

我的 Zend 项目出现以下 Zend Session 错误:

Fatal error: Uncaught exception 'Zend_Session_Exception' with message 'Zend_Session::start() - /home/besthomes/public_html/Zend/Session.php(Line:426): Error #2 session_start() [<a href='function.session-start'>function.session-start</a>]: Cannot send session cache limiter - headers already sent (output started at /home/besthomes/public_html/Zend/Exception.php:1) Array' in /home/besthomes/public_html/Zend/Session.php:432 Stack trace: #0 /home/besthomes/public_html/index.php(47): Zend_Session::start() #1 {main} thrown in /home/besthomes/public_html/Zend/Session.php on line 432

我在引导文件中写了这段代码:

include('include.php');
include "Zend/Loader.php";

Zend_Loader::registerAutoload();
Zend_Session::start();

我不知道这个错误的原因。请帮助摆脱这个问题。 谢谢。

【问题讨论】:

    标签: php zend-framework session


    【解决方案1】:

    检查您的文件中是否没有其他字符。例如 -
    此代码不会触发错误:

    <?php 
    session_start();
    

    但是那个会:

    (blank line here!)
    <?php 
    session_start();
    

    同样的事情适用于包含的文件。但是,当您包含文件时,您还必须注意在关闭标记后没有额外的行(如果您使用它们)。这将起作用:

    <?php
        //content of included file
    ?>
    

    但类似的东西不会:

    <?php
        //content of included file
    ?>    
    (blank line here!)
    (!and here)
    

    这就是为什么有些人认为not using closing tag in php scripts 是好的做法。

    您也可以使用 ob_startob_end_flush 解决该问题,但就像我说的 - 这是解决方法,而不是解决方案

    【讨论】:

      【解决方案2】:

      在您的代码中的某处,有一些输出正在完成,PHP 将为其发送 HTTP 标头。由于 HTTP 标头已发送,因此在尝试启动会话时无法再次发送它们。如果您想使用会话,尽早或首先开始会话是个好主意。

      另一方面,当我的应用程序输出一个单独的错误并发送 HTTP 标头时,我看到了这个错误。

      请查看文档以获取更多信息: http://framework.zend.com/manual/en/zend.session.html

      即名为“开始会话”的部分: http://framework.zend.com/manual/en/zend.session.advanced_usage.html

      提示: 删除/注释掉启动会话的行,并查看输出内容。可能还有其他错误,甚至与您的代码无关。

      【讨论】:

      • thanx 但是当在我的引导文件中添加某种恶意代码时会出现此错误,尽管我已经删除了该代码,但我不知道为什么此错误会出现,因为之前相同的代码运行良好在引导文件中有几天。
      • 我认为这可能与缓存有关?
      • 打开php标签前的空格?
      • 我不会真正称其为恶意代码,除非恶意人员将其添加到那里以伤害某人 - 例如删除硬盘上的所有文件或发送垃圾邮件等。正如我所说,它是可能正在输出另一个错误会触发此错误,或者正如 ArneRie 所说,可能是空格。我在回答中又添加了一项建议。
      • 您应该重新下载 ZF。不要编辑 ZF 代码 - 扩展它。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-22
      • 1970-01-01
      • 2013-05-08
      • 2011-11-08
      • 1970-01-01
      • 2013-04-23
      • 1970-01-01
      相关资源
      最近更新 更多