宝塔面板配置bug导致php上传失败的捉虫经历
发布于 作者:苏南大叔 来源:程序如此灵动~ 我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...
本文讲述的是,在宝塔面板环境下,php
文件上传功能失败的检测过程。为什么强调是在宝塔面板里面,因为这个错误用常规的php
上传错误检测方法,无法检查出来。最终的错误检测表明:这个php
文件上传的错误,是由于宝塔面板的默认配置的问题所导致的...
好,大家请在这里和苏南大叔一起回顾一下,php
文件上传功能失败的主要检查方案。
症状描述
新开通的centos7
服务器,安装了最新版的宝塔面板5.5。配置了nginx2.2
+php7.2
之后,发现仅能上传非常小的文件(10k以内),文件如果稍稍大一点就陷入无序的长时间等待...
检测php.ini
配置
file_uploads = On
upload_tmp_dir = /tmp/
upload_max_filesize = 50M
max_file_uploads = 20
post_max_size = 50M
max_execution_time = 300
max_input_time = 60
memory_limit = 128M
配置项目不一定是这些值,但是必要的允许上传文件,并且设置允许的值大一些,这是必要的步骤。
nginx
设置
nginx
这边主要是限制post
的报文体的大小。
client_max_body_size 50m;
邪恶的分割线,以上的内容,是常规的php
上传功能检查点,但是对于本次案例来说,上述设置项目,全部都检查了,没有任何问题,但是就还是存在着上述“无法上传大文件”的问题,真心是头大啊。再次和老的服务器进行对比检查,最终发现宝塔5.5
的nginx2.2
设置,缺失了一句话!具体见下图。
这个proxy.conf
文件的内容如下:
proxy_temp_path /www/server/nginx/proxy_temp_dir;
proxy_cache_path /www/server/nginx/proxy_cache_dir levels=1:2 keys_zone=cache_one:20m inactive=1d max_size=5g;
client_body_buffer_size 512k;
proxy_connect_timeout 60;
proxy_read_timeout 60;
proxy_send_timeout 60;
proxy_buffer_size 32k;
proxy_buffers 4 64k;
proxy_busy_buffers_size 128k;
proxy_temp_file_write_size 128k;
proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;
proxy_cache cache_one;
增加了这个文件的引用后,重启生效,症状消失。看来,确实和本条内容有关。如果后续还有问题,可能就需要再次检查这里的内容了。当然,也会有人说是nginx
自带的防火墙的问题。我这里,nginx2.2
不支持WAF
防火墙。所以,应该就不是这里的问题了。
关联文章
- 《涉及大文件上传时的php基本系统设置》 https://newsn.net/say/php-upload-bigfile.html
总结
看来,这可能是最新版的宝塔面板的一个小bug。不过也是蛮经典的。解决问题,也是一个挺有意思的事情。不是嘛?更多php
相关经验文章。请点击这里查看:
如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。