austindev 2020-05-28
php架构比较常用的LNMP框架下,此处就不详细介绍LNMP框架了,简单的介绍一个上传文件大小的限制问题。
在nginx配置和php.ini配置中一般会限制上传文件的大小,修改上传文件的大小,就需要修改这两个地方的大小限制。
(1)修改全局上传文件大小限制
修改nginx.conf中的配置,client_max_body_size为对应上传文件限制的大小,还需要注意的一个配置参数是client_body_buffer_size,这是为客户端开辟的内存缓冲区大小,如果上传文件的大小大于client_body_buffer_size的大小,则会写到对应的本地磁盘空间中,写文件的路径由client_body_temp_path决定。
client_max_body_size 4m;
client_body_buffer_size 513k;
(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; }
首先确认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(一次最多上传的文件数,用于多文件同时上传时)