我的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();
我不知道这个错误的原因。请帮助摆脱这个问题。 感谢。
答案 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_start
和ob_end_flush
解决该问题,但就像我说的那样 - 解决方法,而不是解决方案。