一推网

当前位置: 首页 > 知识问答 > 如何修复DiscuzX论坛中非法文件上传的问题?

知识问答

如何修复DiscuzX论坛中非法文件上传的问题?

2025-09-22 01:35:22 来源:互联网转载
确保服务器文件权限正确,定期更新DiscuzX版本,使用安全插件和防火墙。

DiscuzX没有合法的文件被上传的修复方法

在使用Discuz! X3.2论坛程序时,用户经常遇到“没有合法的文件被上传”的问题,这个问题主要由于程序限制了大尺寸附件图片的上传,导致用户无法顺利上传文件,以下是详细的修复方法:

修改class_upload.php文件

1、定位文件:找到Discuz! X3.2的安装目录,进入source/class/discuz/路径下,编辑class_upload.php文件。

2、修改代码:在class_upload.php文件中,找到以下函数:

   function get_image_info($target, $allowswf = false) {       $ext = discuz_upload::fileext($target);       $isimage = discuz_upload::is_image_ext($ext);       if(!$isimage && ($ext != 'swf' || !$allowswf)) {           return false;       } elseif(!is_readable($target)) {           return false;       } elseif($imageinfo = @getimagesize($target)) {           list($width, $height, $type) = !empty($imageinfo) ? $imageinfo : array('', '', '');           $size = $width * $height;           if($size > 16777216 || $size < 16 ) {               return false;           } elseif($ext == 'swf' && $type != 4 && $type != 13) {               return false;           } elseif($isimage && !in_array($type, array(1,2,3,6,13))) {               return false;           }           return $imageinfo;       } else {           return false;       }   }

将其中的if($size > 16777216 || $size < 16 )这一行中的16777216改为更大的数值,可以将其改为83886080(大约为5000*3356),以允许更大尺寸的图片上传。

调整PHP配置

1、编辑php.ini文件:打开php环境的配置文件php.ini,找到并修改以下设置:

   upload_max_filesize = 10M   post_max_size = 10M   memory_limit = 128M

这些设置分别控制了单个文件的最大上传大小、POST数据的最大大小和脚本的最大内存使用量,根据需要调整这些值,然后保存文件并重启Web服务器。

2、虚拟主机用户:如果是虚拟主机用户,可能无法直接修改php.ini文件,请联系服务商协助调整这些设置,或考虑关闭图片缩略相关的功能。

FAQs

问题1:为什么修改了class_upload.php文件后仍然无法上传大尺寸图片?

解答:如果修改了class_upload.php文件后仍然无法上传大尺寸图片,请检查以下几点:

确保修改后的数值足够大,能够容纳您想要上传的图片尺寸。

检查是否有其他代码或插件影响了文件上传功能。

确认Web服务器已经重新启动,以使更改生效。

问题2:如何确保修改后的设置不会对网站性能造成负面影响?

解答:在调整文件上传大小和内存限制等设置时,确实需要注意不要过度增加这些值,以免影响网站性能和稳定性,建议根据实际需求逐步增加这些值,并在每次修改后进行测试,以确保网站能够正常运行且不影响用户体验,定期检查服务器资源使用情况,以便及时发现并解决潜在问题。

序号 修复方法 说明
1 检查文件权限 确保DiscuzX目录和文件的权限正确设置,通常需要设置755或700权限。
2 重置上传目录权限 临时将上传目录的权限设置为777,然后立即更改回755或700,以便上传文件。
3 清除缓存 删除DiscuzX安装目录下的cache目录,然后重新生成缓存文件。
4 检查PHP配置 确保PHP的upload_max_filesize、post_max_size和memory_limit等配置参数足够大,以支持文件上传。
5 检查PHP扩展 确保PHP安装了fileinfo扩展,该扩展对于文件上传非常重要。
6 检查DiscuzX版本 确保DiscuzX版本是最新的,旧版本可能存在已知的上传问题。
7 修复文件上传代码 检查DiscuzX上传代码是否存在问题,如文件类型限制、大小限制等。
8 检查服务器配置 检查服务器配置是否限制了文件上传,如Nginx或Apache的配置。
9 使用FTP工具上传文件 如果上述方法无效,可以尝试使用FTP工具手动上传文件。
10 重装DiscuzX 如果问题仍然存在,可以尝试重新安装DiscuzX,确保安装过程正常。

上一篇:网站建设与在线反馈与投诉治理的整合

下一篇:知乎广告投放,知乎是如何定向投放广告的?