数据什么的都么有问题,配置好rewrite以后,访问网站,发现样式变动了,网站上方空出了一块
我用chrome浏览器的审查元素一看,发现head里的内容全到Body里了,而且body的最开始出多出了一块带引号的空白!
但是如果右键查看源代码的话,代码是正确的,没有问题!
正常状态

错误状态

求大牛解救
问题原因:
网站采用了UTF-8无BOM编码,但是在使用include或者require包含文件的时候,包含了一个UTF-8有BOM的文件,就产生上述现象。
解决方法:
对网站所有文件进行去BOM操作
clearBOM.php(放到根目录下执行,执行前先备份网站,以备不测)
02 |
$basedir = str_replace('/clearBOM.php','',str_replace('\\','/',dirname(__FILE__)));
|
05 |
function checkdir($basedir){
|
06 |
if ($dh = opendir($basedir)) {
|
07 |
while (($file = readdir($dh)) !== false) {
|
08 |
if ($file != '.' && $file != '..'){
|
09 |
if (!is_dir($basedir.'/'.$file)) {
|
10 |
$filename = $basedir.'/'.$file;
|
11 |
echo 'filename:'.$basedir.'/'.$file.checkBOM($filename).'<br>';
|
13 |
$dirname = $basedir.'/'.$file;
|
22 |
function checkBOM ($filename) {
|
24 |
$contents = file_get_contents($filename);
|
25 |
$charset[1] = substr($contents, 0, 1);
|
26 |
$charset[2] = substr($contents, 1, 1);
|
27 |
$charset[3] = substr($contents, 2, 1);
|
28 |
if (ord($charset[1]) == 239 && ord($charset[2]) == 187 && ord($charset[3]) == 191) {
|
30 |
$rest = substr($contents, 3);
|
31 |
rewrite ($filename, $rest);
|
32 |
return '<font color=red>BOM found,automatically removed.</font>';
|
34 |
return '<font color=red>BOM found.</font>';
|
37 |
return 'BOM Not Found.';
|
41 |
function rewrite ($filename, $data) {
|
42 |
$filenum = fopen($filename, 'w');
|
43 |
flock($filenum, LOCK_EX);
|
44 |
fwrite($filenum, $data);
|