如何找到;无法修改标题信息-标题已发送";PHP中的错误

如何找到;无法修改标题信息-标题已发送";PHP中的错误,php,header,Php,Header,我从PHP代码中得到错误“无法修改标题信息-标题已发送” 请注意,我没有收到错误“无法修改标题信息-标题已由发送(输出开始于[filename]:[linenumber])” 我使用SAPI=apache2module获取前者,使用SAPI=cli获取后者 我对这个错误非常熟悉,通常可以准确地知道它是从哪里来的。在我目前的情况下,我不能。(到目前为止,我最好的猜测是mail()函数正在执行输出。) 如何说服PHP使用带有“by(输出从%s:%d开始)”的表单 通过检查PHP源代码,它显然只在记录

我从PHP代码中得到错误“无法修改标题信息-标题已发送”

请注意,我没有收到错误“无法修改标题信息-标题已由发送(输出开始于[filename]:[linenumber])”

我使用SAPI=apache2module获取前者,使用SAPI=cli获取后者

我对这个错误非常熟悉,通常可以准确地知道它是从哪里来的。在我目前的情况下,我不能。(到目前为止,我最好的猜测是mail()函数正在执行输出。)

如何说服PHP使用带有“by(输出从%s:%d开始)”的表单

通过检查PHP源代码,它显然只在记录了位置的情况下使用后面的表单。但是什么让它记录下来的呢

<?php

function exception_error_handler($errno, $errstr, $errfile, $errline ) {
    throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
}
set_error_handler("exception_error_handler");

try {
    header('Content-Type: text/plain');
    printf("before sapi = %s\n", php_sapi_name());
    flush();
    header('X-test: something');
    print "after\n";
} catch (Exception $ex) {
    print($ex);
}
已获得,Apache2模块:

before sapi = apache2handler
exception 'ErrorException' with message 'Cannot modify header information - headers already sent' in /dir/file.php:12
Stack trace:
#0 [internal function]: exception_error_handler(2, 'Cannot modify h...', '/name/david/bar...', 12, Array)
#1 /dir/file.php(12): header('X-test: somethi...')
#2 {main}
before sapi = apache2handler
exception 'ErrorException' with message 'Cannot modify header information - headers already sent by (output started at /dir/file.php:10)' in /dir/file.php:12
Stack trace:
#0 [internal function]: exception_error_handler(2, 'Cannot modify h...', '/name/david/bar...', 12, Array)
#1 /dir/file.php(12): header('X-test: somethi...')
#2 {main}
我想从apache2module获得:

before sapi = apache2handler
exception 'ErrorException' with message 'Cannot modify header information - headers already sent' in /dir/file.php:12
Stack trace:
#0 [internal function]: exception_error_handler(2, 'Cannot modify h...', '/name/david/bar...', 12, Array)
#1 /dir/file.php(12): header('X-test: somethi...')
#2 {main}
before sapi = apache2handler
exception 'ErrorException' with message 'Cannot modify header information - headers already sent by (output started at /dir/file.php:10)' in /dir/file.php:12
Stack trace:
#0 [internal function]: exception_error_handler(2, 'Cannot modify h...', '/name/david/bar...', 12, Array)
#1 /dir/file.php(12): header('X-test: somethi...')
#2 {main}

如果要抑制这些错误,请使用ob_start();在页面的开头和页面底部的ob_end_flush(),我不想抑制它。我想把它修好。所以首先,我必须找到它。(好的,我在最后做了一个重定向,所以错误的输出会丢失,但是如果我得到了一个错误,我想知道它。)@funk四十九这不是一个重复,因为它询问如何让PHP给我其他人似乎从一开始就知道的信息。输出开始的地方。我重新打开了David。对不起,我犯了一个错误,它们确实发生了:)事实上,我完全预料到它至少会被错误标记一次。现在,如果我能得到一个答案。我很想找到我的问题,尤其是因为我真正的代码对我来说是可靠的,而对我的一个用户来说根本不是。