0

莫名故障,丢失少许数据。

| |
2008/04/08    21:51    607    GreyHawk 晴
今天无事在试着调试一病毒样本的时候,操作失误,系统文件严重损毁,濒临崩溃,没办法只有ghost了,恢复完毕后,发现以前备份的论坛cookie无法正常使用,因为要去的论坛比较多,一般我都是这样登陆的,可今天怎么也不能用,没办法只有清空后从新登陆, 后来发现blog的管理员帐户无论如何也无法登陆,表现为输入帐户密码登陆先提示登陆成功,过会就自动返回到未登录状态,试了好几次不成功,刚开始还以为blog被黑了,但是看了看ftp的情况,好像也没动过,再说我一小卒,谁没事黑我哦,再说blog程序的安全性还是可以的,后来再用那个低权限的帐户也是无法登陆,又自己注册了个还是无法登陆,晕死,这到底是怎么回事呢?
         询问空间商得知服务器运行正常,晕死,难道是我机子的问题,没办法在朋友的电脑上登陆也是那样的。看起来貌似是数据库出问题了,好像这几天我也没动过哦,昨天调试木翼的下载系统是另外建立的数据库,应该没什么关联的,汗,没办法只有去修复了,这样下来数据丢失几乎就为0了,要是从新装的话貌似要丢好几天的数据,正好这几天我对广告系统做了大的改变,汗。后来修复完毕后还是老样子。
       没办法只好清空数据库,从新安装,完毕进入首页却显示一串E文,出问题了,大概的意思好像是找不到模板什么的,google下也有类似的问题出现,看了下多是linux服务器权限设置问题,可我就基本没怎么动,权限还是以前设置好的,又检查了下没问题哦,想了半天才模板过来,我把blog程序默认的模板文件给删除了,用第三方的,现在重新安装肯定找的是默认的,赶紧吧默认的模板上传了,问题也就没了,接下来就是恢复数据,幸亏我是隔三差五的备份,不然这此损失可就大了,虽然丢失一部分,但至少很小的一部分了sleepy,blog是恢复正常了,但是昨天莫名的问题还是让人郁闷。

后来在blog官方技术人员的帮助下解决了不能登陆的问题,方法就是换个主题lei,别以为我是说笑呢,有出现我同样问题的朋友可以试试,呵呵!!至于原因貌似找到一点,是我修改了模板的配置文件,修改的时候用了window是的记事本,因为不是专业编程人员,修改代码的专业工具有,但是一般懒得用,估计导致编码错误,在模板配置文件中加入了BOM信息的缘故。一招官方提供的检查BOM信息的程序检测没检测到,不知道怎么回事。

引用
BOM信息是文件开头的一串隐藏的字符,用于让某些编辑器识别这是个UTF-8编码的文件。但PHP在读取文件时会把这些字符读出,从而形成了文件开头含有一些无法识别的字符的问题。

比如用UTF-8格式保存的生成图片的PHP文件,因为文件头隐藏的BOM信息也被下发,导致生成的图片数据不对,浏览器无法识别。

要检测一个UTF-8文件是否含有BOM信息,就是检测文件开头的字三个符,是否为0xEF, 0xBB, 0xBF。下面这个小程序,用户遍历某个目录下所有文件,并检测是否加了BOM。


找到的检测并清除BOM的方法,虽然没用上还是贴出来。
引用
<?
//此文件用于快速测试UTF8编码的文件是不是加了BOM,并可自动移除
//By Bob Shen

$basedir="."; //修改此行为需要检测的目录,点表示当前目录
$auto=1; //是否自动移除发现的BOM信息。1为是,0为否。

//以下不用改动

if ($dh = opendir($basedir)) {
while (($file = readdir($dh)) !== false) {
if ($file!='.' && $file!='..' && !is_dir($basedir."/".$file)) echo "filename: $file ".checkBOM("$basedir/$file")." <br>";
}
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);
}


将以上代码另存为del_bom.php,修改需要检测的目录后运行。这样可能有助于检测是哪个文件带有了BOM信息导致所有页面开头都有那么一段空白。
收藏本文到网摘: 添加到“Google书签” 添加到“Yahoo收藏” 添加到“QQ书签” 添加到“百度搜藏” 添加到“新浪ViVi收藏夹” 添加到“Del.icio.us” 添加到“365天天网摘” 添加到“天极网摘” 添加到“POCO网摘” 添加到“和讯网摘” 添加到“Bolaa博客收录中心” 添加到“igooi网摘” 添加到“天下图摘”
Tags: | 分类:心情日记 | 来源:本站原创 | 引用(0)