2009-11-29 64 views
0

我管理两个不同的博客。他们都是WordPress的2.8.6(所以他们有完全相同的源代码,插件除外),但他们位于两个不同的托管平台(hostmonster.com和aruba.it)。 为了解释我的问题,我已经把SmartSniff与每个站点的会话都抛弃了。由Wordpress自动生成的PHP页面中的BOM

这里是HostMonster的转储:

GET /blog/paolo/ HTTP/1.1 
Host: www.e-venturi.com 
Accept-Encoding: identity 
Accept-Language: en-us 
Accept: text/html, text/plain, text/xml, image/gif, image/x-xbitmap, image/x-icon,image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */* 
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0;) 


HTTP/1.1 200 OK 
Date: Sat, 28 Nov 2009 23:47:38 GMT 
Server: Apache/2.2.14 (Unix) mod_ssl/2.2.14 OpenSSL/0.9.8l DAV/2 mod_auth_passthrough/2.1 FrontPage/5.0.2.2635 
X-Powered-By: PHP/5.2.11 
X-Pingback: http://www.e-venturi.com/blog/paolo/xmlrpc.php 
Vary: Accept-Encoding 
Transfer-Encoding: chunked 
Content-Type: text/html; charset=UTF-8 

a6 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
阿鲁巴

现在:

GET /blog/ HTTP/1.1 
Host: www.cubanite.net 
Accept-Encoding: identity 
Accept-Language: en-us 
Accept: text/html, text/plain, text/xml, image/gif, image/x-xbitmap, image/x-icon,image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */* 
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0;) 


HTTP/1.1 200 OK 
Date: Sat, 28 Nov 2009 23:49:19 GMT 
Server: Apache/2.2 
X-Pingback: http://www.cubanite.net/blog/xmlrpc.php 
Vary: Accept-Encoding 
Transfer-Encoding: chunked 
Content-Type: text/html; charset=UTF-8 

100b 
...<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 

(注:A6和100B是由SmartSniff报告的数据包大小)

好,最大的区别是在阿鲁巴的<!DOCTYPE前面的三个点。它们是UTF-8 BOM(0xef 0xbb 0xbf)。

作为两台服务器上的相同PHP源代码,它为什么只出现在一台服务器上?

内容已生成,因此发布作者无法故意插入BOM,并且我已验证该模板也是免费的BOM。 服务器上自然有不同的PHP和Apache版本......我可以检查或设置什么来诊断和解决问题?顺便说一下,我不想要BOM。

非常感谢提前。

+1

你确定你检查了BOM的所有文件吗?即不仅是所要求的,还包括所有的要求。 – chelmertz 2009-11-29 03:40:29

+0

chelmertz,你是对的:-(我忘了一个小文件,它有一个BOM ...它在一个插件中,我不得不通过ftp下载整个博客,并用我已经完成的一个小程序检查每个文件(我不能在阿鲁巴的服务器上执行此操作),并且我找到了它。感谢让我再次检查所有内容;-) – Paolo63 2009-11-29 17:55:06

回答

5

BOM在打开<?php之前的PHP源文件之一中。偶尔会出现这种情况,因为您在一个编写不好的文本编辑器中查看了源代码,使用了一个带有bug的FTP客户端,使用了一个自动放入BOM中的解压缩工具,从阴暗镜子中获取了源代码等等。

我的解决方案是在Notepad ++中打开主要的WP文件(index.php,wp-*.php等),并将格式从Windows/Mac切换到Unix并关闭BOM。这将清理所有源问题的文件。

您在两台不同的服务器上看到它的原因可能是因为服务器运行两个不同的服务器应用程序或两个不同的操作系统(甚至有两种不同的配置)。平台的差异将导致您的服务器发出他们自己对BOM的独特解释。

希望这会有所帮助!