LNMP大文件上传:413 Request Entity Too Large

原创 zhaoliang  2017-07-08 13:32  阅读 658 views 次

WNMP集成环境开发正常,发布到LNMP下发现无法上传大于1M的文件,以为是OP在搭建环境时没有调整PHP的upload_max_filesize配置导致,查验后发现已经调整为20M,结果仍然无法上传大于1M的文件,查看了一下上传大文件时返回的HTTP头信息发现是413 Request Entity Too Large,才发现原来是Nginx服务端的问题,原来是OP在部署环境时使用了nginx的默认配置,没有单独配置文件上传大小限制,而Nginx默认的文件上传大小只有1M……
解决方法:在nginx.conf中添加配置client_max_body_size 10M即可,具体大小可以实际需求自定。

client_max_body_size默认值

同时整理了一下PHP的文件上传限制条件,发现除了要调整upload_max_filesize的默认2M外,视情形还要调整其它几处配置:upload_max_filesize,默认大小8M;memory_limit默认128M或其它值;max_execution_time默认30s……

一般情况下,上传文件成功与否,会到受以下顺序的限制memory_limit > post_max_size > upload_max_filesize,如果你想上传一个10M的文件,必须设定upload_max_filesize的值不小于10M,如果不调整post_max_size的大小(默认8M),显然是无法上传成功的,所以一般情况下,我们会在php.ini配置中将post_max_size和upload_max_filesize设置为相同的大小,比如10M(视需求场景而定),也可通过ini_set在程序执行过程中动态指定。

在上传文件时,较小的文件耗时较短,可能几秒就足够了,较大一些的文件执行时间相对就要久的多,若上传超过一定的时间(PHP脚本默认只执行30S),上传操作也必须会因脚本执行中止而导致上传失败,所以这时你还需要调整max_execution_time的配置或者在程序执行过程中使用set_time_limit动态指定脚本执行时间(推荐)。

本文地址:http://blog.58cm.cn:8088/archives/457.html
版权声明:本文为原创文章,版权归 zhaoliang 所有,欢迎分享本文,转载请保留出处!

评论已关闭!