我们有时在图集栏目上传图片时出现FILEID错误,但是在附件管理里面能够看到已经上传成功的图片文件。
我们有时在图集栏目上传图片时出现,但是在附件管理里面能够看到已经上传成功的图片文件。
如下图:
本地安装了一下新版的V57GBK,测试了一番,没有发现该问题,登录到一个朋友提供的存在该问题的站点后台,注意到为UTF-8版本,遂详细测试了一番,查看了管理目录下的swfupload.php做了几个断点测试,在生成缩略图那里找到了问题的原因。
查看一下你的include/common.inc.php 的文件格式UTF-8编码的朋友,注意将格式调整为,GBK编码的朋友,注意将格式调整为ANSI(使用NotePad++,菜单栏有一格式菜单,打开即可调整文件格式,当然也可以选择DW,Editeplus 云云)
现在提供一个缩略图修复文件,保存为a.php,放在网站根目录访问下就可以了。
如果在访问a.php的时候报错如:
PHP Fatal error: Allowed memory size of 134217728 bytes exhausted
那就试用下面的修改版检查出有bom的文件自己修改吧。
<?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);
echo ("<br><br><font color=green>completed!</font><br>");
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");
}
else
{
$dirname = $basedir."/".$file;
checkdir($dirname);
}
}
}
closedir($dh);
}
}
function checkBOM ($filename) {
global $auto;
$contents = file_get_contents($filename,NULL,NULL,0,10);
$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);
echo ($filename."--------"."<font color=red>BOM found</font><br>");
} 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);
}
?> |
附件下载:
转自:
http://bbs.dedecms.com/309348.html