zoukankan      html  css  js  c++  java
  • PHP 上传文件大小限制

    修改 php.ini 文件

    首先我们要修改php相关的一些配置来完成上传文件时大小的限制。

    file_uploads = on ;
    

    是否允许通过HTTP上传文件的开关。默认为ON即是开

    upload_max_filesize = 8m ;
    

    允许上传文件大小的最大值。默认为2M

    post_max_size = 8m ;
    

    通过表单POST给PHP的所能接收的最大值,包括表单里的所有值。默认为8M

    如果 POST 数据尺寸大于 post_max_size $_POST$_FILES superglobals 便会为空.

    一般地,在网络正常的情况下,设置好上述三个参数后,上传<=8M的文件是不成问题。但如果要上传>8M的大体积文件,只设置上述三项不一定能行的通。

    max_execution_time = 30 ;
    

    每个PHP页面运行的最大时间值(秒),默认30秒。

    超过30秒,该脚本就停止执行,这样就会出现无法打开网页的情况

    max_input_time = 60 ;
    

    每个PHP页面接收数据所需的最大时间,默认60秒

    memory_limit = 8m ;
    

    每个PHP页面所吃掉的最大内存,默认8M

    修改 nginx.conf 文件

    nginx对上传文件大小是有限制的,解决方法是修补nginx相对应的配置文件。

    client_max_body_size     50m; //文件大小限制,默认1m
    client_header_timeout    1m; 
    client_body_timeout      1m; 
    proxy_connect_timeout     60s; 
    proxy_read_timeout      1m; 
    proxy_send_timeout      1m;
    

    每个参数的意思:

    client_max_body_size
    

    限制请求体的大小,若超过所设定的大小,返回413错误。

    client_header_timeout
    

    读取请求头的超时时间,若超过所设定的大小,返回408错误。

    client_body_timeout
    

    读取请求实体的超时时间,若超过所设定的大小,返回413错误。

    proxy_connect_timeout
    

    http请求无法立即被容器(tomcat, netty等)处理,被放在nginx的待处理池中等待被处理。此参数为等待的最长时间,默认为60秒,官方推荐最长不要超过75秒。

    proxy_read_timeout
    

    http请求被容器(tomcat, netty等)处理后,nginx会等待处理结果,也就是容器返回的response。此参数即为服务器响应时间,默认60秒。

    proxy_send_timeout
    

    http请求被服务器处理完后,把数据传返回给Nginx的用时,默认60秒。

    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 可以设置在 httpserverlocation 块中,所以我们可以对域名甚至一个请求地址来提高上传包的大小值。

    修改/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/admin; 
            fastcgi_pass  127.0.0.1:9000; 
            fastcgi_index index.php; 
            fastcgi_param SCRIPT_FILENAME /home/www/admin$fastcgi_script_name; 
            include    fastcgi_params; 
       
            client_max_body_size 35m;    #客户端上传文件大小设为35M 
            client_body_temp_path /home/www/nginx_temp;    #设置临时目录 
          } 
    

    附录:Nginx有一个Upload组件:

    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$";
        }
    
  • 相关阅读:
    数据仓库经验小结(转)
    SSIS高级内容 系列一
    SSIS高级内容 系列二
    SSIS数据流组件开发(1)转载
    在sharepoint中添加视频播放
    处理数据仓库中历史数据的若干问题
    SSIS数据流组件开发(2) 转载
    [转载]俄罗斯只剩“大国的脾气”
    [转载]游击队员之歌
    [转载]世界是女人的
  • 原文地址:https://www.cnblogs.com/niuben/p/13727987.html
Copyright © 2011-2022 走看看