Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖

[教程] 改上传附件大小限制全攻略(综合数名网友的贡献,确保步骤无漏)

[复制链接]
 楼主| 圆圆舟子 发表于 2012-10-1 08:37:27 | 显示全部楼层
【转】
一、apache服务器上传文件的大小限制,全是由php脚本控制。所以所有的上传文件大小限制设置全跟php脚本有关。
二、具体设置详情如下:

学习PHP时,你可能会遇到PHP上传文件大小限制问题,这里将介绍PHP上传文件大小限制问题的解决方法,在这里拿出来和大家分享一下。PHP与 ASP或ColdFusion不同,PHP是一种源代码开放程序,拥有很好的跨平台兼容性。用户可以在Windows NT系统以及许多版本的Unix系统上运行PHP,而且可以将PHP作为Apache服务器的内置模块或CGI程序运行。
除了能够精确的控制WEB页面的显示内容之外,用户还可以通过使用PHP发送HTTP报头。用户可以通过PHP设置cookies,管理用户身份识别,并 对用户浏览页面进行重定向。PHP具有非常强大的数据库支持功能,能够访问几乎目前所有较为流行的数据库系统。此外,PHP可以与多个外接库集成,为用户 提供更多的实用功能,如生成PDF文件等。

用户可以直接在WEB页面中输入PHP命令代码,因而不需要任何特殊的开发环境。在WEB页面中,所有PHP代码都被放置在“”中。此外,用户还可以选择使用诸如 等的形式。PHP引擎会自动识别并处理页面中所有位于PHP定界符之间的代码。

PHP脚本语言的语法结构与C语言和Perl语言的语法风格非常相似。用户在使用变量前不需要对变量进行声明。使用PHP创建数组的过程也非常简 单。PHP还具有基本的面向对象组件功能,可以极大的方便用户有效组织和封装自己编写的代码。这里给大家介绍一下关于PHP上传的问题。

通常在php.ini里面可以设置最大上传文件大小,有时候还是上传文件时只能小于512k的?稍微大有点就会出错,找不到上传页面,“该页无法显示,.......,找不到服务器或发生 DNS 错误

PHP上传文件大小限制解决方法:

第一:

在php.ini里面查看如下行:

    upload_max_filesize = 8M
    post_max_size = 10M
    memory_limit = 20M

把这些值改成我所说的,看看有没有问题,另外要确认上传的 <form> 里没有类似下面的这行

    <input type="hidden" name="MAX_FILE_SIZE" value="500000">

这样也是限制上传大小用的。

第二:

如果是apache 2 需要修改

    /etc/httpd/conf.d/php.conf

LimitRequestBody 524288将524288(=512×1024)改大,比如5M(=5×1024×1024)这样上传就不会出现如上问题,上传不响应,上传现实该页无法现实也将得到解决!
相信上述文章足够解决问题的了。
而此文章被转载得到处都是,我也分不清哪里是原创了,所以出处省略,望原作者谅解。
回复

使用道具 举报

 楼主| 圆圆舟子 发表于 2012-10-1 15:20:53 | 显示全部楼层
【转】
PHP限制了你最大只能上传2MB的文件。
要改
upload_max_filesize – 没错就是这个,最大上传文件大小限制。你会发现此处默认为2M。
memory_limit – 单个脚本可用最大内存,此设置可以防止设计有缺陷的PHP脚本占用所有的系统内存,如果不想限制单个脚本最大使用内存可以设置该值为-1(建议不要设置为-1)。
post_max_size – 设置递交数据最大大小。该设置也会影响到最大上传文件大小的配置,该值设置必须大于upload_max_filesize设置的值。通常情况下,memory_limit设置的值要比post_max_size的值大。
系统默认设置如下,所以只能上传2MB的附件了:

    upload_max_filesize = 2M
    memory_limit = 128M
    post_max_size = 8M

以下下两种方法设置之后即可上传10MB的附件。
方法一:编辑php.ini。
编辑你的php.ini配置文件。(他可能在 /etc/php.ini 或者 /etc/php.d/cgi/php.ini 或者 /usr/local/etc/php.ini)

    vim /etc/php.ini

更改为如下配置(当然,此处只是一个例子,有可能你的memory_limit实际需求是64MB)。

    upload_max_filesize = 10M
    memory_limit = 32M
    post_max_size = 20M

保存之后重启Apache服务。

    service httpd restart

方法二:编辑.htaccess文件。
如果无法获取更改php.ini的权限(例如虚拟主机),可以通过创建或者编辑.htaccess来实现。在.htaccess中添加

    php_value upload_max_filesize 10M
    php_value post_max_size 20M
    php_value memory_limit 32M

上传到网站服务器的根目录即可。
回复

使用道具 举报

 楼主| 圆圆舟子 发表于 2012-10-2 21:20:18 | 显示全部楼层
问题症状:

                 无法上传 图片与附件,服务器限制无法上传那么大的附件

                上传附件提示:服务器限制无法上传那么大的附件

                 找遍了dz论坛和百度都没有人能解决

                 而且遇到这个问题的人特别特别的多。。。但是都没有解决。



所处环境:   

Discuz! 程序版本  Discuz! X2 Release 20110817  
UCenter 客户端版本  UCenter 1.6.0 Release 20110501  
服务器系统及 PHP  WINNT / PHP v5.2.9-2  
服务器软件  Microsoft-IIS/6.0  
服务器 MySQL 版本  5.0.81-community-nt  
上传许可  20M  
当前数据库尺寸  13.34 MB  



造成原因:

这个问题及其有可能是php版本高了造成的。5.2以上的版本容易出现这种问题!

解决方法

1、打开php.ini文件

2、查找 ;upload_tmp_dir =

3、去掉前面的分号,并且在等于号后面加上一个临时目录,一般可以设置windows的临时目录:C:\windows\temp 或者自己弄一个临时文件夹;

4、把上面设置的临时文件夹赋予足够的权限,everyone  完全控制;

5、设置好后重新启动下IIS就正常了。


问题点评

这种问题十分难找出来,因为网站没有其他问题,权限设置也没错可是就是找不到原因。。要不是对比两台服务器的环境,发现一个是php5.0一个是php5.2的话还真不知道怎么解决。

php。ini 配置中 ;upload_tmp_dir =一般是不大开的饿,但是dx对这个是有要求的。所以只需要把高版本php中配置好临时文件夹即可!



【本文为5+7原创,请大家转载的时候记得加上5+7的博客地址哦~谢谢拉!】
回复

使用道具 举报

818771 发表于 2012-10-5 20:00:05 | 显示全部楼层
这个很好啊 学习了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-5-17 15:17 , Processed in 0.093849 second(s), 15 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表