php - 追踪过早的标题泄漏

use*_*841 0 php header setcookie

我在网站上使用set_cookie().添加一些功能后,我收到Warning: Cannot modify header information - headers already sent by...错误.它引用的标题所引用的行号是set_cookie()所在的行!我检查过,它没有被调用两次.

如何追踪这些过早的标题?我查看了源代码,并且在错误消息开始之前没有看到任何流浪字符或任何东西(我正在使用xdebug,所以第一件事就是a
,我认为是我,但实际上是xdebug消息的开头).我已经为我的代码添加了额外的echo等等 - 什么都没有.

PHP可以告诉我标题何时何地开始?或者他们是否真的从set_cookie线开始,如果是这样,我是如何让自己陷入这种情况的,我该怎么走出去?


编辑:我不确定我可以粘贴代码 - 你只想要set_cookie()行吗?我认为标题是在那之前出来的.在此之前还有很多事情要进行实例化.而且我也不认为我可以发布所有课程和内容 - 你知道,专有信息;)


编辑:我已经摆脱了所有终止分隔符(所有?>s)并确保每个包含文件的第一个字符是<?.这令人沮丧!在我做这些最近的改变之前它正在工作:(((

另外,为什么不起作用headers_sent()

if ( headers_sent($filename, $linenum) ) { 
    echo "headers sent: $filename:$linenum."; 
}   
set_cookie(...); 
Run Code Online (Sandbox Code Playgroud)

headers sent: :0. 
Run Code Online (Sandbox Code Playgroud)

Ste*_*rig 7

你可以使用headers_sent():

if (!headers_sent($filename, $linenum)) {
    set_cookie(/*...*/);
} else {
    echo "Headers already sent in $filename on line $linenum\n";
    exit;
}
Run Code Online (Sandbox Code Playgroud)