解除Nginx PHP上传文件限制 作者: Hogwarts 发布于: 2023-04-18 更新于: 2023-04-26 分类: 默认分类 抄太多无从考证了 ##一、修改配置文件php.ini 以php8.2为例,`php.ini`在`/etc/php/8.2/fpm`目录下 file_uploads = On 是否允许上传文件,默认ON 。 upload_max_filesize = 2M 允许上传文件的大小的最大值,默认为2M 。改为:64M 设定文件上传的大小的最大值,php.ini配置文件中的默认文件上传大小为2M,php初学者容易犯的一个错误是在编写文件上传功能时通过设置上传文件最大大小的表单区域,即允许上传文件的最大值,max_file_size(隐藏值域)的值来规定上传文件的大小,其实一般别人可以绕过这个值,所以安全起见,最好是在 php.ini 配置文件中配置 upload_max_filesize 选项,设定文件上传的大小。默认 upload_max_filesize = 2M,即文件上传的大小为2M,如果你想上传超过8M的文件,比如20M,你必须设定upload_max_filesize = 20M。 还需要考虑传输时间的问题,如果数值不加限制,传输时间有限制,也会出错。 max_file_uploads = 20 一个表单最多只能上传20个附件,图片加缩位图的话为10张。改为:100 post_max_size = 8M 控制采用POST方法进行一次表单提交中PHP所能接受的最大数据量,如果希望用PHP文件上传,则此值要改为比upload_max_filesize要大。改为:128M max_input_time = 60 以秒为单位对通过POST/GET/PUT方式接受数据时间进行限制。改为:90 memory_limit = 128M 为了避免正在运行的脚本大量使用系统内存,PHP允许定义内存使用限额。通过设置此参数来制定单个脚本程序可以使用的最大内存容量,应适当大于post_max_size值。改为:256M max_execution_time = 30 用来设置在强制终止脚本前PHP等待脚本执行完毕的时间,单位秒。次选项可限制死循环脚本,但当存在一个长时间的合法活动时(如:上传大文件),这项功能也会导致操作失败。这样情况下必须考虑将此变量增加。改为:120 #二、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; 经测试,在Nginx上也应设置。 参数 `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 上传大文件超时解决办法](https://blog.csdn.net/z69183787/article/details/83070275 "Nginx 上传大文件超时解决办法") #三、参考 [php大文件上传失败的原因及解决方法](https://www.cnblogs.com/fps2tao/p/15824716.html "php大文件上传失败的原因及解决方法") [php大文件上传失败的原因及解决方法](https://www.php54.com/article/0004.html "php大文件上传失败的原因及解决方法") 标签: PHP, nginx, php8.2