Code前端首页关于Code前端联系我们

如何解决PHP文件上传限制问题

terry 2年前 (2023-09-24) 阅读数 73 #后端开发

上传文件时,经常会出现上传失败的情况,失败的原因有很多,包括nginx文件上传限制和PHP文件上传限制。

注意,这里所说的限制不仅仅是大小限制,还有上传时间等。今天我们就来说说Nginx和PHP在上传文件时的相关限制参数,好吗?

Nginx相关限制

对于Web来说,nginx是顶级代理代理。有以下上传限制:

1。 client_max_body_size

客户端请求服务器允许的最大主体大小,在请求标头中指定的“Content-Length”中。如果请求的文本数据大于client_max_body_size,HTTP协议将报告413 Request Entity Too Large错误。也就是说,如果请求的文本大于client_max_body_size,肯定会失败。如果您需要上传大文件,请务必更改此值。默认值:1M

2。 client_body_timeout

读取请求实体的超时时间。如果超过设定的大小,则返回413错误。默认值:60 秒

3。 client_header_timeout

读取请求头的超时时间。如果超过设定的大小,则返回408错误。默认值:60秒

与上面读取body的client_body_timeout相同,只是读取header的时间。

4。 proxy_connect_timeout

http请求无法立即被容器(tomcat、php-fpm等)处理,被放置在nginx挂起池中等待处理。这个参数是最大等待时间,默认是60秒,官方建议不要超过75秒

5。 proxy_read_timeout

http请求被容器(tomcat、php-fpm等)处理后,nginx会等待处理。结果是容器返回的响应。该参数是服务器响应时间,默认为60秒

6。 proxy_send_timeout

http请求被服务器处理后,返回数据到Nginx的时间默认为60秒。

PHP 上传相关限制

1. file_uploads

服务器上的PHP脚本是否可以接受HTTP文件上传。On 表示打开,Off 表示关闭

2。 max_execution_time

页面的最大执行时间,默认为30秒。即使页面上传时设置的超时时间超过该值,30秒后请求也会中止,页面会报错。与PHP中的set_time_limit作用相同,但set_time_limit必须关闭安全模式才能起作用。

配置为0,表示没有时间限制

3。 post_max_size

定义POST上传数据时可以上传的最大大小。默认是2M

如果实际POST数据大于这个值,$_POST和$_FILES这两个全局变量为空

示例:post_max_size = 50M

4。 upload_max_filesize

定义上传文件时可接受的最大文件大小。默认为 8M。这是根据Nginx实际业务场景调整的

示例:upload_max_filesize = 50M

5。 upload_max_filesize

最大上传文件的大小。该值不能大于post_max_size值

示例:upload_max_filesize=8M

6.upload_tmp_dir

上传时的临时文件夹,默认为空,系统指定/示例:'_mple tmp/ phpupload'

7。 max_input_time

PHP脚本接受客户端请求数据的最大时间,这个时间包括POST、GET和文件上传等数据

示例:max_input_time = 120

8。 memory_limit

单个PHP脚本可以请求的最大内存空间。有时,由于使用的内存超出限制,会出现程序错误。您可以适当增加该值。

内存限制 = 100M

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门