如何解决PHP文件上传限制问题
上传文件时,经常会出现上传失败的情况,失败的原因有很多,包括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前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。