PHP 文件上传限制问题


Posted in PHP onSeptember 01, 2019

PHP 大文件上传占用大量资源,因此需要对上传的大小进行限制,以下为相关的三个参数:

  • client_max_body_size
  • upload_max_filesize
  • post_max_size

与以上相对应的三个报错信息:

Warning: POST Content-Length of 9663102 bytes exceeds the limit of 8388608 bytes in Unknown on line 0

$_FILES['file']['error']==1

nginx错误:413 Request Entiry Too Large

client_max_body_size 用于设置客户端 Request body(请求体)的大小上限,要上传的文件就在 body 体 中,所以此参数可以间接的看做是对文件上传大小的限制。

nginx 服务器通过请求头的 Content-Length 确定 body 体的大小。超过设置的上限会返回错误码 413 Request Entity Too Large,将此参数设置为 0 可以取消对长度的限制。

Syntax:    client_max_body_size size;
Default:   
client_max_body_size 1m;
Context:    http, server, location

client_max_body_size 可以设置在 http、server、location 块中,所以我们可以对域名甚至一个请求地址来提高上传包的大小值。

php错误:

Warning: POST Content-Length of 9663102 bytes exceeds the limit of 8388608 bytes in Unknown on line 0
此时为上传文件大小大于 post_max_size 。

php 无警告但是获取不到上传的文件

此时 $_FILES['file']['error']==1 ,错误原因是上传文件的大小小于 post_max_size 但是大于 upload_max_filesize 。

知识点开扩展:

PHP和Nginx 文件上传大小限制问题解决方法

对于nginx+php的一些网站,上传文件大小会受到多个方面的限制,一个是nginx本身的限制,限制了客户端上传文件的大小,一个是php.ini文件中默认了多个地方的设置。

所以为了解决上传文件大小限定的问题必须要做出多处修改。以下整理了几个地方。

1、修改/usr/local/nginx/conf/nginx.conf 文件,查找 client_max_body_size 将后面的值设置为你想设置的值。比如:

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 
      # 
      location ~ \.php$ { 
        root      /home/www/htdocs; 
        fastcgi_pass  127.0.0.1:9000; 
        fastcgi_index index.php; 
        fastcgi_param SCRIPT_FILENAME /home/www/htdocs$fastcgi_script_name; 
        include    fastcgi_params; 
   
        client_max_body_size 35m;    #客户端上传文件大小设为35M 
        client_body_temp_path /home/www/nginx_temp;    #设置临时目录 
      }

附录:Nginx有一个Upload组件:

上传速率,上传Body大小,也就是上传文件时可能较大?

client_max_body_size 1024M
upload_limit_rate 158k

如下:      

location /upload {
      upload_pass   /up.php;
      upload_cleanup 400 404 499 500-505;
      #upload_store  /data/app/test.local/upload_tmp;
      upload_store  /tmp;
      upload_store_access user:r;
      client_max_body_size 1024M;
      upload_limit_rate 158k;
      upload_set_form_field "${upload_field_name}_name" $upload_file_name;
      upload_set_form_field "${upload_field_name}_content_type" $upload_content_type;
      upload_set_form_field "${upload_field_name}_path" $upload_tmp_path;
      upload_aggregate_form_field "${upload_field_name}_md5" $upload_file_md5;
      upload_aggregate_form_field "${upload_field_name}_size" $upload_file_size;
      upload_pass_form_field "^.*$";
      #upload_pass_form_field "^pid$|^tags$|^categoryid$|^title$|^userid$|^user_id$|^is_original$|^upload_file_name$|^upload_file_content_type$|^upload_file_path$|^upload_file_md5$|^upload_file_size$";
    }

2、修改php.ini

upload_max_filesize = 8M  
post_max_size = 10M  
memory_limit = 20M 
max_execution_time=300 
file_uploads = On #默认允许HTTP文件上传,此选项不能设置为OFF。
upload_tmp_dir =/tmp/www

在上传大文件时,你会有上传速度慢的感觉,当超过一定的时间,会报脚本执行超过30秒的错误,这是因为在php.ini配置文件中 max_execution_time配置选项在作怪,其表示每个脚本最大允许执行时间(秒),0 表示没有限制。你可以适当调整max_execution_time的值,不推荐设定为0。

总结

以上所述是小编给大家介绍的PHP 文件上传限制问题,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

PHP 相关文章推荐
PHP中调用JAVA
Oct 09 PHP
dedecms模版制作使用方法
Apr 03 PHP
解决MySQL中文输出变成问号的问题
Jun 05 PHP
Zend Studio去除编辑器的语法警告设置方法
Oct 24 PHP
php实现统计邮件大小的方法
Aug 06 PHP
php操作mysql数据库的基本类代码
Feb 25 PHP
php、mysql查询当天,查询本周,查询本月的数据实例(字段是时间戳)
Feb 04 PHP
PHP数组常用函数实例小结
Aug 20 PHP
PHP中常用的三种设计模式详解【单例模式、工厂模式、观察者模式】
Jun 14 PHP
基于PHP实现微信小程序客服消息功能
Aug 12 PHP
Laravel5.4简单实现app接口Api Token认证方法
Aug 29 PHP
PHP 判断字符串是中文还是英文, 或者是中英混合
Mar 09 PHP
laravel框架模板之公共模板、继承、包含实现方法分析
Aug 30 #PHP
php中的钩子理解及应用实例分析
Aug 30 #PHP
Yii框架分页技术实例分析
Aug 30 #PHP
Laravel5.4简单实现app接口Api Token认证方法
Aug 29 #PHP
thinkPHP5使用Rabc实现权限管理
Aug 28 #PHP
Thinkphp5框架ajax接口实现方法分析
Aug 28 #PHP
Thinkphp5框架实现图片、音频和视频文件的上传功能详解
Aug 27 #PHP
You might like
谈一谈收音机的高放电路
2021/03/02 无线电
Yii框架获取当前controlle和action对应id的方法
2014/12/03 PHP
phpStudy访问速度慢和启动失败的解决办法
2015/11/19 PHP
jquery 读取页面load get post ajax 四种方式代码写法
2011/04/02 Javascript
获取客户端电脑日期时间js代码(jquery)
2012/09/12 Javascript
Javascript 鼠标移动上去 滑块跟随效果代码分享
2013/11/23 Javascript
javascript贪吃蛇完整版(源码)
2013/12/09 Javascript
js实现DOM走马灯特效的方法
2015/01/21 Javascript
JS实现自适应高度表单文本框的方法
2015/02/25 Javascript
javascript中setAttribute()函数使用方法及兼容性
2015/07/19 Javascript
js实现的彩色方块飞舞奇幻效果
2016/01/27 Javascript
jQuery版AJAX简易封装代码
2016/09/14 Javascript
详解Vue使用 vue-cli 搭建项目
2017/04/20 Javascript
JS库之ParticlesJS使用简介
2017/09/12 Javascript
Vue使用zTree插件封装树组件操作示例
2019/04/25 Javascript
基于JS实现数字动态变化显示效果附源码
2019/07/18 Javascript
Python3.5 处理文本txt,删除不需要的行方法
2018/12/10 Python
Python Subprocess模块原理及实例
2019/08/26 Python
Python 中list ,set,dict的大规模查找效率对比详解
2019/10/11 Python
Python中sorted()排序与字母大小写的问题
2020/01/14 Python
CSS3美化表单控件全集
2016/06/29 HTML / CSS
Html5导航栏吸顶方案原理与对比实现
2020/06/10 HTML / CSS
牵手50新加坡:专为黄金岁月的单身人士而设的交友网站
2020/08/16 全球购物
IMPORT的选项IGNORE有什么作用?缺省是什么设置?
2015/09/17 面试题
店长职务说明书
2014/02/04 职场文书
团日活动总结模板
2014/06/25 职场文书
商务经理岗位职责
2014/08/03 职场文书
无子女夫妻离婚协议书(4篇)
2014/10/20 职场文书
2014年教育培训工作总结
2014/12/08 职场文书
优秀大学生事迹材料
2014/12/24 职场文书
普通员工辞职信范文
2015/05/12 职场文书
暂住证明怎么写
2015/06/19 职场文书
安全责任协议书范本
2016/03/23 职场文书
导游词之山海关
2019/12/10 职场文书
一文弄懂MySQL索引创建原则
2022/02/28 MySQL
详解Mysql事务并发(脏读、不可重复读、幻读)
2022/04/29 MySQL