PHP警告:标题已以未知格式发送

PHP警告:标题已以未知格式发送,php,error-reporting,Php,Error Reporting,我正在寻找可能触发以下PHP警告的东西: PHP警告:无法修改标题 信息-已发送的标题 第0行未知 我认为发生的是一个内置的php函数正在输出一些东西。我已经在几个IMAP函数中看到了这一点,它们只输出了一个“”(空格字符),结果把事情搞砸了。 您可以使用Xdebug或Zend调试器来跟踪它,但如果两者都没有的话 尝试将输出缓冲包装在一些您认为可能导致它的函数周围 ob_start(); callYourFunction(); ob_end_clean(); 每次执行一个函数,当错误消失时,您

我正在寻找可能触发以下PHP警告的东西:

PHP警告:无法修改标题 信息-已发送的标题 第0行未知


我认为发生的是一个内置的php函数正在输出一些东西。我已经在几个IMAP函数中看到了这一点,它们只输出了一个“”(空格字符),结果把事情搞砸了。 您可以使用Xdebug或Zend调试器来跟踪它,但如果两者都没有的话 尝试将输出缓冲包装在一些您认为可能导致它的函数周围

ob_start();
callYourFunction();
ob_end_clean();
每次执行一个函数,当错误消失时,您将知道是哪个函数导致了问题,然后您可以提交错误报告,或者将其作为黑客留下。但至少你知道是什么功能导致了这个问题


Edit:is说您的输出发生在第0行,这意味着它是一个C级函数,而不是任何使用PHP编写的代码。

您是否检查过您的文件是否有意外情况?

可能有很多事情,但正如其他人所说,通常只是在某个地方的一个空间被输出,然后发送一个命令,这通常是正常的,但不是在开始发回内容之后(在这种情况下可能只是一个空间)

使用会通过缓冲立即停止输出。所以这是一个潜在的解决方案,或者至少是一种诊断其来源的方法


造成这些空间丢失的一个常见原因是在这种情况下

global.php

<?php
  $variable = 1;
  $database = 'something else';
?> <-- A space here
 <-- Or here
<?php

  require('global.php');
  $var = dosomething();
  header('Location: http://www.example.com/');

?>

错误告诉您有东西发送了输出,这将强制发送头,因为头必须写在http消息体之前

我发现最常见的问题是标题中的文本。可视信息:

<?php // myfile.php
  include 'header.php';
?>

在header.php中:

<?php // header.php
   ....
 ?>

您在这里看不到的是,在结束“
?>
”之后有一个空格或CR/LF。这是输出,因为php标准规定,php标记之外的任何内容都输出为html


解决方法是确保在结束“
?>”

后,确保删除所有内容

ob_start("ob_gzhandler");

这引起了警告。这似乎已经在2001年得到了报道和修复,但出于某种原因,它不断出现。

有一个PHP标准??!?!和往常一样,我非常感谢解释否决票的评论,这样我就可以做出调整,了解或删除错误的问题。谢谢。找到你的解决方案很好!你可以选择正确的答案,这样就可以在其他答案的顶部看到。你也可以编辑它来添加更多的细节,这样它可以帮助其他人。接受自己的答案有48小时的时间限制。至于细节,我想不出还有什么要补充的了。嗯,我在想关于“2001年报告和修复”的更多细节。是谁干的?PHP社区?你有bug报告的链接吗?还是你或你的团队的内部缺陷?它叫什么名字?在所有脚本的开头?包括在内吗?在已知的图书馆?这可能会有帮助。:-)啊,给你。这个调用是在index.php的第一行进行的,在每个页面视图中都有,但没有包括在内。我得到了完全相同的警告,并且还跟踪到了ob_gzhandler。我的页面似乎仍然工作正常。忽略这个警告(在这种情况下)安全吗?这是我的问题。由于记事本++“编码->转换为不带BOM的UTF-8”功能,现已修复
<?php // header.php
   ....
 ?>
ob_start("ob_gzhandler");