项目部署在Nginx服务器上的文件上传问题

问题:文件可以正常上传,上传的文件超过1M时候,上传出现问题!!

这里写图片描述


一、修改Nginx配置文件

修改Nginx配置文件 nginx.conf
加入以下这句

client_max_body_size          100m; ##文件大小限制,默认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请求无法立即被容器处理,被放在nginx的待处理池中等待被处理。此参数为等待的最长时间,默认为60秒,官方推荐最长不要超过75秒

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

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

这里写图片描述

二、修改PHP配置文件

修改PHP的php.ini文件,有些人修改了参数,还是失败!
原因一:没有从启Nginx和php-fpm。
原因二:不知道PHP引用的php.ini是哪一个,修改错了。

解决:

<?php
echo phpinfo();//输出查看引用的路径

引用的路径如下:
这里写图片描述

##需要在PHP.ini里设置以下几项:
1. post_max_size =10M 表单提交最大数据为10M.此项不是限制上传单个文件的大小,而是针对整个表单的提交数据进行限制的.

2.file_uploads = On 是否允许上传文件,如果为OFF您将不能上传文件.

3.upload_tmp_dir = "/tmp/nginx/uploadtemp/" 上传文件时系统使用的缓存目录.如果此目录所在磁盘空间不足的话您将不能上传文件.(修改到你自己规定的目录)

4.upload_max_filesize =2M 最大上传文件大小,此项针对上传文件时单个文件的大小.
与post_max_size之间的关系:

####------------------以上4项必须设置,以下几项看情况设置,也可以不设置--------------------------####
>说明:
post_max_size=10M; 设为10M,而此项upload_max_filesize =2M;设成了2M,那么您只能上传最大为2M的附件,且可以同时上传5个.不能超过post_max_size的值

###另外还有一些其他值
max_input_time=600;  ## 每个PHP页面接收数据所需的最大时间,默认60秒

>说明:
以秒为单位对通过POST、GET以及PUT方式接收数据时间进行限制。如果应用程序所运行环境处在低速链路上,则需要增加此值以适应接收数据所需的更多时间

memory_limit=8m;   ##每个PHP页面所吃掉的最大内存,默认8M.

>说明:
为了避免正在运行的脚本大量使用系统可用内存,PHP允许定义内存使用限额。通过memory_limit变量来指定单个脚本程序可以使用的最大内存容量变量memory_limit的值应当适当大于post_max_size的值

max_execution_time=600; ##每个PHP页面运行的最大时间值(秒),默认30秒

>说明:
max_execution_time设置了在强制终止脚本前PHP等待脚本执行完毕的时间,此时间以秒计算。当脚本进入了一个无限循环状态时此变量非常有用。然而,当存在一个需要很长时间完成的合法活动时(例如上传大型文件),这项功能也会导致操作失败。在这样的情况下必须考虑将此变量值增加,以避免PHP在脚本正在执行某些重要过程的时候将脚本关闭

猜你喜欢

转载自blog.csdn.net/post_mans/article/details/77869645