我爱帮助网-手册QQ交流群

Nas交流与矿渣群(unraid 群晖 猫盘 蜗牛等):580680114         物联网/智能家居群:518812757             帮助教程:手册大全

软件使用与建站群:1057308983      虚拟化交流群:13448651

0

Discuz论坛无法上传头像出现I/O错或调用已上传图片过程中发生错误

来源:我爱帮助网

作者:tmtony


Discuz论坛有关头像上传相关错误的最全解决方案和经验心得:

Discuz论坛无法上传头像出现I/O错或调用已上传图片过程中发生错误

很多网友都会遇到Discuz论坛上传头像出现问题,或 Discuz论坛更换上传论坛头像的时候,也会跳出错误提示:“调用已上传图片过程中发生错误!”


在网上找了相当多的资料,发现解决的方法基本是无效的或部分无效。虽然有的状况一样,但是没有最全的解决方法,自己研究了很多方案并且不断尝试和总结,总算是解决了这个问题。



首先说明下Discuz论坛出现无法上传头像的一些具体症状和错误提示,主要的错误有下面几个:

1. 调用已上传图片过程中发生错误 

  (这个错误现象就是图片已经成功上传到 .\uc_server\data\tmp 下,但无法复制到 .\uc_server\data\avatar 下面的子目录)


2. 论坛头像上传时出现I/O错误

3.上传成功但头像没有刷新

使用Flash头像上传时,点击上传图片,然后显示“图片载入中,请稍后的提示信息”和上传进度的百分比,最后却是没有任何的反应。
网上有部分网友说到进度到10%就没有任何反应,其实只是部分情况,如果传大图片的话会显示其他进度百分百。
使用超级银光头像上传时,点击上传图片,上传会上传成功,但是随后的预览图片会显示三张不同尺寸的空白图片,头像依然没有任何变化。
 discuz 上传头像无效

再说下网上说的大部分情况,这里只做参考,毕竟我们的情况和下面关系不太大:
1. 服务器文件夹权限问题
2. Discuz UC通讯问题 

3. 下载的论坛有问题(以前老版本的程序本身的问题)

4. URL重写模块的问题 

5. 安全软件屏蔽等导致的问题(我的情况)


网上的说所的大部分情况都是PHP版的Discuz


解决办法:

主要是逐个排除,下载最新的Discuz论坛版本,先排除服务器文件夹权限问题,再排除UC通讯问题,再排除URL重写问题,最后再排除安全狗这种安全软件的问题


以下是其它人解决这类问题的一些经验总结,求助前,先自行按照以下情况来检查一下。
Q:头像上传提示 I/O 错误
A:检查 UCenter 目录下
./index.php 是否存在且完整
./data/avatar/ 是否可写
./data/tmp/ 是否可写

Q:上传头像的flash无法显示
A:1、检查自己的浏览器是否支持flash
2、查看论坛config.inc.php 中 UC_API 是不为空,且正确。
3、请到 UCenter 目录检查 ./images/camera.swf 是否存在且可以访问到
4、以上三步都确定没问题,请试图去访问如下地址,记得替换 url 前面的部分为自己的 UCenter 的访问地址
http://www.bbs.com/uc_server/images/camera.swf?inajax=1&appid=1&input=22f6zJckAbI1KBrwXAOE%2BoLttIQe7BVlE%2B4U5Dd%2FXfZu0BF5gaoVWopQDOsXBd2MZqFGIMc3PKtNjQFt5mbs9soT5n%2FrsTZOIDWlvE7Vs5geNJbIAx1YquHUu0U&agent=8293ea1ef33d827e614c96e87f770809&ucapi=http%3A%2F%2Fwww.bbs.com%2Fuc_server&avatartype=
复制代码
如果无法访问,请下载本附件解压缩,之后
client.php替换应用程序目录下的 uc_client/client.php
camera.swf 替换 UCenter 目录下的 images/camera.swf

Q:文件已上传,请选择合适的区域,但是没有显示出来图片
A:1、查看论坛任何一个页面的源文件,看看是否在</html>后面有输出。如果有的话,那么这个是我们无法解决的,要联系空间提供商
2、登陆 UCenter 后台看看通信是否成功。
3、检查 UCenter 下 ./data/tmp 是否可写,linux请设置为 777
4、询问空间提供商看看是否服务器禁止了flash应用上传文件


针对第URL重写产生的原因分析和最终解决方法

主要原因是Discuz!Nt中是有启用URL重写,而项目代码中的Url重写模块有屏蔽掉上传头像的默认图片保存路径,如果访问了上传头像的默认图片路径,是无法打开的图片的,URL会被转移到首页,所以无论如何头像都无法上传成功。

停用Web.config配置文件对重写模块的配置



安全软件屏蔽等导致的问题(我的情况)

1.可以在IIS选择对应的目录 如.\Uc_Server\data\tmp , 双击处理程序映身,单击右边的 编辑功能权限,去掉脚本

2.然后 删除 SafedogIISAuditor64 及SafedogIISAuditor32位的这2个映射(关键)



其它技巧:

设置 禁止脚本的方法,对IIS8.5 无效


在目录里生成一个web.config文件
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <handlers accessPolicy="Read" />
    </system.webServer>
</configuration>