Php 为什么BOM会引起警告;标题已被发送";?

Php 为什么BOM会引起警告;标题已被发送";?,php,warnings,configuration-files,byte-order-mark,Php,Warnings,Configuration Files,Byte Order Mark,请注意,这不是重复的。表面上的重复都可以用“只保存而不保存BOM表就可以了!”来回答。然而,我的问题是,为什么 如果我无意中用一个BOM表保存了一个PHP文件,并且我试图从PHP内部发送一个头,那么 警告:无法修改标题信息-标题已由第1行file.php中的(输出从file.php:1开始)发送 你知道常规。当然,如果文件保存时没有BOM表,则不会发生这种情况 然而,这里有一个棘手的部分:这个警告并非无处不在!在我的例子中,当我从http://localhost/,但当我将文件上传到我的网站并从

请注意,这不是重复的。表面上的重复都可以用“只保存而不保存BOM表就可以了!”来回答。然而,我的问题是,为什么

如果我无意中用一个BOM表保存了一个PHP文件,并且我试图从PHP内部发送一个头,那么

警告:无法修改标题信息-标题已由第1行file.php中的(输出从file.php:1开始)发送

你知道常规。当然,如果文件保存时没有BOM表,则不会发生这种情况

然而,这里有一个棘手的部分:这个警告并非无处不在!在我的例子中,当我从
http://localhost/
,但当我将文件上传到我的网站并从那里打开时,确实会发生这种情况


那么,有什么区别呢?我的本地Apache或网站的Apache是否存在漏洞?这个问题是否可以通过将buggy one升级到最新版本来解决?或者可能是某个地方的配置问题,可以通过编辑ini文件来解决吗?

最有可能的是,您的本地主机已经打开了


另外,可能值得检查。

因为BOM是输出的,所以它会导致发送标题。差异可能是报告配置差异的错误。谢谢您的回答。我的php.ini确实有
output\u buffering=4096
,我将其更改为
Off
,并重新启动了Apache,但这没有什么区别。更改
删除unicode
zend.multibyte
也没有任何效果。所以我没有再继续了。