nginx-LNMP框架下修改上传文件大小限制

austindev 2020-05-28

php架构比较常用的LNMP框架下,此处就不详细介绍LNMP框架了,简单的介绍一个上传文件大小的限制问题。

在nginx配置和php.ini配置中一般会限制上传文件的大小,修改上传文件的大小,就需要修改这两个地方的大小限制。

  • 1、修改nginx上传文件大小的配置

(1)修改全局上传文件大小限制

修改nginx.conf中的配置,client_max_body_size为对应上传文件限制的大小,还需要注意的一个配置参数是client_body_buffer_size,这是为客户端开辟的内存缓冲区大小,如果上传文件的大小大于client_body_buffer_size的大小,则会写到对应的本地磁盘空间中,写文件的路径由client_body_temp_path决定。

nginx-LNMP框架下修改上传文件大小限制

    • client_max_body_size 4m;

    • client_body_buffer_size 513k;

    • client_body_temp_path /home/test/webserver/cache/client_body

(2)修改部分接口上传文件大小限制

 如果只是需要修改部分接口上传文件大小的限制,则只需要在对应接口的location中添加对应的参数。

location = /model/controller/uploadfile {
        root /home/test/odp_test/webroot;
        index index.php;
        fastcgi_pass    $php_upstream;
        fastcgi_index   index.php;
        include         fastcgi.conf;
        client_max_body_size 20m;
        client_body_buffer_size 20m;
        rewrite ^/ui(/[^\?]*)?((\?.*)?)$ /ui/index.php$1$2 break;
    }
  • 修改php.ini配置

首先确认file_uploads = on ;[是否允许通过HTTP上传文件的开关,默认为ON即是开]

      upload_max_filesize = 64m ;即允许上传文件大小的最大值。默认为2M

      post_max_size = 64m ;指通过表单POST给PHP的所能接收的最大值,包括表单里的所有值。默认为8M.

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

  max_execution_time = 600 ;每个PHP页面运行的最大时间值(秒),默认30秒 
  max_input_time = 600 ;每个PHP页面接收数据所需的最大时间,默认60秒 
  memory_limit = 128m ;每个PHP页面所吃掉的最大内存,默认8M

把上述参数修改后,在网络所允许的正常情况下,就可以上传大体积文件了 
  max_execution_time = 600 
  max_input_time = 600 
  memory_limit = 128m 
  file_uploads = on 
  upload_max_filesize = 64m 
  post_max_size = 64m 
  max_file_uploads = 20(一次最多上传的文件数,用于多文件同时上传时)

相关推荐