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