侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

PHP 文件上传限制问题

php  /  管理员 发布于 7年前   399

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 修改上传文件大小限制实例详解
  • 通过修改配置真正解决php文件上传大小限制问题(nginx+php)
  • php修改文件上传限制方法汇总
  • php限制上传文件类型并保存上传文件的方法
  • 叫你如何修改Nginx与PHP的文件上传大小限制
  • php中让上传的文件大小在上传前就受限制的两种解决方法
  • php.ini修改php上传文件大小限制的方法详解
  • php 文件上传代码(限制jpg文件)
  • PHP 上传文件大小限制
  • 解决RHAS3中Apache2的PHP上传文件大小的限制


  • 上一条:
    PHP实现单文件、多个单文件、多文件上传函数的封装示例
    下一条:
    php中的钩子理解及应用实例分析
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • PHP 8.4 Alpha 1现已发布!(0个评论)
    • 用Time Warden监控PHP中的代码处理时间(0个评论)
    • 在PHP中使用array_pop + yield实现读取超大型目录功能示例(0个评论)
    • Property Hooks RFC在PHP 8.4中越来越接近现实(0个评论)
    • 近期文章
    • 智能合约Solidity学习CryptoZombie第三课:组建僵尸军队(高级Solidity理论)(0个评论)
    • 智能合约Solidity学习CryptoZombie第二课:让你的僵尸猎食(0个评论)
    • 智能合约Solidity学习CryptoZombie第一课:生成一只你的僵尸(0个评论)
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2017-06
    • 2017-07
    • 2017-08
    • 2017-09
    • 2017-11
    • 2017-12
    • 2018-01
    • 2018-02
    • 2018-03
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2020-07
    • 2020-09
    • 2021-02
    • 2021-03
    • 2021-04
    • 2021-05
    • 2021-06
    • 2021-07
    • 2021-08
    • 2021-09
    • 2021-10
    • 2021-11
    • 2021-12
    • 2022-01
    • 2022-02
    • 2022-05
    • 2022-06
    • 2022-07
    • 2022-08
    • 2022-09
    • 2022-10
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-02
    • 2023-03
    • 2023-04
    • 2023-05
    • 2023-06
    • 2023-07
    • 2023-08
    • 2023-09
    • 2023-10
    • 2023-11
    • 2023-12
    • 2024-01
    • 2024-02
    • 2024-03
    • 2024-04
    • 2024-05
    • 2024-06
    • 2024-07
    • 2024-09
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客