简介:ngnix文件上传限制,php文件上传限制
我们在上传文件的时候经常会遇到上传失败,而失败的原因有很多种,这其中就包括nginx对文件上传的限制,还有PHP对文件上传的限制。
注意了,这里说的限制不只是大小的限制,还有上传时间等。今天我们就来说说Nginx和PHP对文件上传的相关限制参数吧?
Nginx相关限制
对于web而言nginx是最上层的代理,对于上传的限制有以下几种:
1. client_max_body_size
客户端请求服务器最大允许大小,在“Content-Length”请求头中指定。如果请求的正文数据大于client_max_body_size,HTTP协议会报 413 Request Entity Too Large 错误。就是说如果请求的正文大于client_max_body_size,一定是失败的。如果需要上传大文件,一定要修改该值。默认值:1M
2. client_body_timeout
读取请求实体的超时时间,若超过所设定的大小,返回413错误。默认值:60秒
3. client_header_timeout
读取请求头的超时时间,若超过所设定的大小,返回408错误。默认值:60秒
和上面 client_body_timeout 读取body体一样,仅读取 header头部的时间。
4. proxy_connect_timeout
http请求无法立即被容器(tomcat, php-fpm等)处理,被放在nginx的待处理池中等待被处理。此参数为等待的最长时间,默认为60秒,官方推荐最长不要超过75秒
5. proxy_read_timeout
http请求被容器(tomcat, php-fpm等)处理后,nginx会等待处理结果,也就是容器返回的response。此参数即为服务器响应时间,默认60秒
6. proxy_send_timeout
http请求被服务器处理完后,把数据返回给Nginx的用时,默认60秒。
PHP上传相关限制
1. file_uploads
服务器上的PHP脚本是否可以接受HTTP文件上传。On开启,Off关闭
2. max_execution_time
页面最长执行时间,默认为30秒。 即使页面上传时设置超时时间超过这个值,30秒之后也会中断请求,页面报错。与PHP中的 set_time_limit 有相同的作用,但是set_time_limit需要关闭安全模式才起作用。
配置为0,表示不做时间限制
3. post_max_size
定义POST上传数据时最大可上传的大小,默认为2M
如果实际POST过来的数据大于该值,则 $_POST和 $_FILES 这两个全局变量就为空值
示例:post_max_size = 50M
4. upload_max_filesize
定义上传文件时可接受的文件大小的最大值。默认为8M。这个根据实际业务场景配合Nginx进行调整
示例:upload_max_filesize = 50M
5. max_file_uploads
一次提交最多可以上传多少个文件,默认:20
示例:max_file_uploads = 20
6.upload_tmp_dir
上传时临时目录,默认为空,系统指定
示例:upload_tmp_dir = '/tmp/phpupload'
7. max_input_time
PHP脚本从客户端接受请求数据的最大时间,这个时间包含了POST、GET和文件上传等数据
示例:max_input_time = 120
8. memory_limit
单个PHP脚本能申请到的最大内存空间。有的时候会因为使用内存超出限制,导致程序出错,可以适当的增大该值。
memory_limit = 100M
有什么不对的可以在我的公众号留言