Nginx服务器+PHP修改文件上传的大小限制

本文介绍了解决上传大文件时遇到的问题的方法,包括修改Nginx服务器配置以增加文件上传大小限制,并调整php.ini配置文件以提高上传文件大小阈值。

【前言】

我们在做web开发的时候,一般都会有上传文件这种操作,但是如果上传的文件过大,就会出现以下的情况:



【解决方法】

第一步:修改Nginx服务器上传文件大小的限制。

(1)一般来说,要修改Nginx服务器上传文件大小的限制,需要修改nginx.conf配置文件。很多人可能不知道nginx.conf文件在哪个目录下,可以采用下面的命令来查找:

root@iZ94zkqo7dnZ:~# find / -name nginx.conf
/etc/nginx/nginx.conf
/etc/init/nginx.conf

(2)编辑nginx.conf配置文件,添加client_max_body_size 100m。如下就相当于把服务器上传的文件大小限制改成了100M。大家可以根据自己的需求修改。



(3)使用service nginx restart指令重启nginx服务。

完成第一步之后,大家可以上传一个比较大的文件试试。如果没有任何问题,那就不用往下看了,如果还有错误,请看第二步。


======================================================


第二步:修改php.ini上传文件大小的限制。

我在完成了第一步之后,试着上传了一个超过2M的图片,结果又出现如下的错误:


(1)检测错误的具体信息,只需使用如下的一行语句,就可以检测出来:

var_dump($_FILES['name']['error']);



(2)我返回的值是1,所以需要修改php.ini配置文件中upload_max_filesize的值。用相同的指令找到php.ini文件进行修改。

(3)重启。这个步骤特别重要,我看网上的说法都是说修改php.ini配置文件之后,只重启nginx服务是没有用的,必须要重启php-fpm,我当时就被这个php-fpm困扰了很久。其实只需要使用reboot指令重启虚拟机就行了。


*注:

如果采用了如上的步骤还没解决的话,还需要修改一下php.ini配置文件中的post_max_size的值。

Nginx 中调整上传文件大小限制,主要通过配置 `client_max_body_size` 指令来实现。该指令用于控制客户端请求体的最大允许大小,若上传文件的大小超过此限制,则会返回 413(请求实体太大)错误[^3]。 ### 配置方法 `client_max_body_size` 可以放置在 Nginx 的不同配置块中,包括 `http`、`server` 和 `location` 块,具体取决于需要应用限制的范围。 #### 全局设置(适用于所有站点) 将配置添加到 `http` 块中,可以全局生效: ```nginx http { client_max_body_size 100M; } ``` 这将允许客户端请求体最大为 100MB[^4]。 #### 站点级别设置(适用于特定域名或IP) 在 `server` 块中设置,仅对当前虚拟主机生效: ```nginx server { listen 80; server_name example.com; client_max_body_size 50M; location / { proxy_pass http://backend; } } ``` 上述配置将上传文件大小限制为 50MB,适用于整个网站[^2]。 #### 路径级别设置(适用于特定路径) 如果希望只对某些 URL 路径放宽或收紧上传限制,可以在 `location` 块中进行配置: ```nginx location /upload/ { client_max_body_size 200M; client_body_buffer_size 256M; proxy_pass http://upload_backend; } ``` 此配置表示 `/upload/` 路径下允许上传最大为 200MB 的文件,并且设置了较大的缓冲区以提高性能[^3]。 #### 禁用大小限制 如果希望完全禁用上传大小限制,可以将值设为 `0`: ```nginx client_max_body_size 0; ``` 不过,这种做法通常不推荐,因为它可能导致服务器资源被滥用。 ### 注意事项 - 修改Nginx 配置后,必须重新加载配置使其生效,通常使用命令 `nginx -s reload`。 - 如果使用了反向代理后端服务(如 PHP、Node.js 等),还需要检查后端服务本身的上传限制设置,例如 PHP 中的 `post_max_size` 和 `upload_max_filesize` 参数。 - 浏览器通常不会很好地处理 413 错误,因此建议前端也做适当的提示和校验。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值