nginx、apache、IIS服务器的文件大小的限制解决办法 client_max_body_size 、client_max_body_size、 file_uploads、 upload_max_filesize、 post_max_size
1、nginx服务器的解决办法
client_max_body_size
修改nginx.conf的值就可以解决了
将以下代码粘贴到nginx.conf内
client_max_body_size 20M
可以选择在http{ }中设置:client_max_body_size 20m;
也可以选择在server{ }中设置:client_max_body_size 20m;
还可以选择在location{ }中设置:client_max_body_size 20m;
三者有区别
设置到http{}内,控制全局nginx所有请求报文大小
设置到server{}内,控制该server的所有请求报文大小
设置到location{}内,控制满足该路由规则的请求报文大小
同时记得修改php.ini内的上传限制
upload_max_filesize = 20M
client_max_body_size file_uploads upload_max_filesize post_max_size
通过设置nginx的client_max_body_size解决nginx+php上传大文件的问题:
用nginx来做webserver的时,上传大文件时需要特别注意client_max_body_size这个参数,否则会中断在nginx的请求中,在php中是无法记录到访问的.
一般上传大文件流程:
首先修改php.ini文件:
参数 设置 说明
file_uploads on 是否允许通过HTTP上传文件的开关。默认为ON即是开
upload_tmp_dir – 文件上传至服务器上存储临时文件的地方,如果没指定就会用系统默认的临时文件夹
upload_max_filesize 8m 望文生意,即允许上传文件大小的最大值。默认为2M
post_max_size 8m 指通过表单POST给PHP的所能接收的最大值,包括表单里的所有值。默认为8M
说明
一般来说,设置好上述四个参数后,在网络正常的情况下,上传<=8M的文件是不成问题的
但如果要上传>8M的大文件的话,只设置上述四项还不一定能行的通。除非你的网络真有100M/S的上传高速,否则你还得继续设置下面的参数。
max_execution_time 600 每个PHP页面运行的最大时间值(秒),默认30秒
max_input_time 600 每个PHP页面接收数据所需的最大时间,默认60秒
memory_limit 8m 每个PHP页面所吃掉的最大内存,默认8M
但是还是不行,因为的webserver用的是nginx, google了一下,发现在nginx的conf中添加了一个参数:
默认是1M,需要增大的话。
在nginx.conf中增加一句
client_max_body_size 30m;
重启即可
30m表示最大上传30M,需要多大设置多大。
2、apache服务器修改
在apache环境中上传较大软件的时候,有时候会出现413错误,出现这个错误的原因,是因为apache的配置不当造成的,找到apache的配置文件目录也就是conf目录,和这个目录平行的一个目录叫conf.d打开这个conf.d,里面有一个php.conf
目录内容如下:
#
# PHP is an HTML-embedded scripting language which attempts to make it
# easy for developers to write dynamically generated webpages.
#
LoadModule php4_module modules/libphp4.so
#
# Cause the PHP interpreter handle files with a .php extension.
#
SetOutputFilter PHP
SetInputFilter PHP
LimitRequestBody 6550000
#
# Add index.php to the list of files that will be served as directory
# indexes.
#
DirectoryIndex index.php
误就发生在这个LimitRequestBody配置上,将这个的值改大到超过你的软件大小就可以了
如果没有这个配置文件请将
SetOutputFilter PHP
SetInputFilter PHP
LimitRequestBody 6550000
写到apache的配置文件里面即可。
3、IIS服务器(Windows Server 2003系统IIS6)
先停止IIS Admin Service服务,然后
找到windows\system32\inesrv\下的metabase.xml,打开,找到ASPMaxRequestEntityAllowed 修改为需要的值,然后重启IIS Admin Service服务
1、在web服务扩展 允许active server pages和在服务器端的包含文档
2、修改各站点的属性 主目录-配置-选项-启用父路径
3、使之可以上传大文档(修改成您想要的大小就可以了,以字节为单位)
c:\WINDOWS\system32\inetsrv\MetaBase.xml
!企业版的windows2003在第592行
默认的预设置值 AspMaxRequestEntityAllowed=“204800” 即200K
将其加两个0,即改为,现在最大就可以上传20M了。
AspMaxRequestEntityAllowed=“20480000”