DEDE的UTF-8编码存在问题,在国内空间一般都用的GB,很少用UTF-8的,所以出现问题的人不多。
一般出现问题的现象有2个:
1:直接打开后台地址是空白,比如打开/dede,显示是空白。必须这样打开:
2:发布内容显示空白
出现问题的原因很简单,include文件夹下面的common.inc.php文件存在BOM标签,这在LINUX环境下就会出错。这个BOM标签很麻烦,用Dreamweaver或者记事本另存为UTF-8好象都去不了这个标签。
大家可以试下用以下php程序去BOM标签法:
将以下代码另存为比如:bom.php,然后将bom.php和common.inc.php放在同一个目录下
再从地址栏访问bom.php,这样bom.php就会查找本目录下所有包含BOM标签的文件并去除。
访问路径如:http://127.0.0.1/bom/bom.php
程序原码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>去BOM标签</title>
</head>
<body>
<?php
//remove the utf-8 boms
//by magicbug at gmail dot com
if (isset($_GET['dir'])){
//config the basedir
$basedir=$_GET['dir'];
}else{
$basedir = '.';
}
$auto = 1;
checkdir($basedir);
function checkdir($basedir){
if ($dh = opendir($basedir)) {
while (($file = readdir($dh)) !== false) {
if ($file != '.' && $file != '..'){
if (!is_dir($basedir."/".$file)) {
echo "filename: $basedir/$file ".checkBOM("$basedir/$file")." <br>";
}else{
$dirname = $basedir."/".$file;
checkdir($dirname);
}
}
}
closedir($dh);
}
}
function checkBOM ($filename) {
global $auto;
$contents = file_get_contents($filename);
$charset[1] = substr($contents, 0, 1);
$charset[2] = substr($contents, 1, 1);
$charset[3] = substr($contents, 2, 1);
if (ord($charset[1]) == 239 && ord($charset[2]) == 187 && ord($charset[3]) == 191) {
if ($auto == 1) {
$rest = substr($contents, 3);
rewrite ($filename, $rest);
return ("<font color=red>BOM found, automatically removed.</font>");
} else {
return ("<font color=red>BOM found.</font>");
}
}
else return ("BOM Not Found.");
}
function rewrite ($filename, $data) {
$filenum = fopen($filename, "w");
flock($filenum, LOCK_EX);
fwrite($filenum, $data);
fclose($filenum);
}
?>
</body>
</html>
今天在DEDE后台安装插件出现问题,导致后台变成空白,再回头登陆时,登陆页面也是一片空白,查看源代码也是一片空白,在网上找了些资料,参考如下资料解决了DEDE后台登录变成一片空白的问题。
找到:include/common.inc.php文件,打开,查找程序代码:
//error_reporting(E_ALL);
error_reporting(E_ALL || ~E_NOTICE);
替换为:
error_reporting(E_ALL);
//error_reporting(E_ALL || ~E_NOTICE);
这一步很重要,因为它会告诉你为什么变成空白的提示信息,保存之后再次进入管理后台,这个时候会发现后台会有一句话提示了,原文提示是:
Parse error: parse error in D:\wwwroot\pcpps\Web\data\config.cache.inc.php on line 44 找到之后先把上面的改回来,然后我们从错误提示上来分析。
从中我们可以现在在网站根目录的data\config.cache.inc.php on line 44有问题,然后我就把以前正常时备份过的data\config.cache.inc.php 重新上传全覆盖后问题就解决了.到此排除了dede后台登陆一片空白的问题。