Zend Session致命错误

时间:2011-02-10 05:27:00

标签: php zend-framework session

我的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

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

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

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

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

2 个答案:

答案 0 :(得分: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

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

答案 1 :(得分:2)

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

<?php 
session_start();

但是那个会:

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

同样的事情适用于包含的文件。但是,当您包含文件时,您还必须注意在clossing标记之后没有其他行(如果您使用它们)。这将有效:

<?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解决该问题,但就像我说的那样 - 解决方法,而不是解决方案