【发布时间】:2010-03-12 15:54:22
【问题描述】:
我在网站上使用 set_cookie()。添加一些功能后,我收到Warning: Cannot modify header information - headers already sent by... 错误。它引用的标头从哪里启动的行号就是 set_cookie() 所在的行!我检查了一下,它没有被调用两次。
如何追踪这些过早的标头?我查看了源代码,在错误消息开始之前没有看到任何杂散字符或任何东西(我正在使用xdebug,所以第一件事是一个
,我以为是我,但实际上是开始xdebug 消息)。我已经为额外的echo 获取了我的代码等等——什么都没有。
PHP 能告诉我标头何时何地开始吗?还是他们真的从 set_cookie 行开始,如果是这样,我是如何让自己陷入这种境地的,我该如何摆脱?
编辑:我不确定我可以粘贴代码——你只想要 set_cookie() 行吗?我以为标题在那之前就出来了。在此之前还有很多事情要实例化不同的类。而且我不认为我可以发布所有的课程和东西——你知道,专有信息;)
编辑:我已经去掉了所有终止分隔符(全部为?>s),并确保每个包含文件的第一个字符都是<?。这令人沮丧!在我进行这些最近的更改之前它正在工作:(((
另外,为什么headers_sent() 不起作用?
if ( headers_sent($filename, $linenum) ) {
echo "headers sent: $filename:$linenum.";
}
set_cookie(...);
给予
headers sent: :0.
【问题讨论】:
-
能否给我们展示部分相关代码?
-
您可以做的一件事是确保所有包含的文件中的 ?> 后面没有空格