Discuz X3 图片上传大于2M失败的优化和改进(Nginx)

  •   
  • 8769
  • Linux
  • 5
  • super_dodo
  • 2014/09/09

目前比较流行的论坛的就属Discuz了,在论坛里面常规的图片都会小于2M,但是对于高清大图或者动态的GIF,大于2M的比比皆是.

我的论坛就遇到了需要上传失败的提示.错误信息包括,图片超过最大的大小,IO错误,上传到一定进度又自动循环重传等.

解决的步骤主要有:

1.检查并修改PHP的配置文件php.ini 把

file_uploads = On;			//此项默认打开,无需修改.
upload_max_filesize = 10M;	//上传的最大文件为2M,修改成所需要的数值,如10M.
max_file_uploads = 20;		//单次请求最大文件上传个数.
post_max_size = 10M;		//数据包最大的限制,设定POST数据所允许的最大大小,如修改为10M.
max_execution_time = 300;	//PHP页面执行时间,上传大附件时30秒可能不够,需改成所需要的值,设为0表示无限制.
max_input_time = 600;		//PHP脚本解析请求数据所用的时间,上传大附件时,需改成所需要的值.
memory_limit = 256M;		//PHP脚本所能申请到的最大内存数,这个数值一般情况下设定为内存的四分之一即可.

//重启PHP进程(Nginx) 重启nginx或者apache,Discuz后台更新缓存.
//修改完第一步之后常规的上传已经能满足大多数的服务要求了.若还上传失败请继续第二步操作.

2.登录Discuz的后台,更改用户组的权限,选择系统管理员组下面的用户组,更改论坛最大附件尺寸.后台管理首页也可以看到服务器的上传许可10M(php的配置).具体的设置如下图:

Discuz图片上传

Discuz图片上传

3.若还是未果,出现上传大概30s左右又图片的上传进度有回复为1,又继续循环的上传,始终未成功的时候.查询许多资料未果,最终发现.原因是我所使用的nginx服务的限制.
编辑 nginx.conf文件,在http内加上

client_max_body_size 128m;					//128m表示上传文件大小.
client_body_temp_path /var/www/temp;		//上传的临时目录.

发个上传成功后的2.8M的动态GIF的中秋技术宅男福利贴给大家(有尺度的萌妹纸,少儿不宜).点击送福利,物超所值,走过路过千万别错过

泛爱众,而亲仁。有余力,则学文。