如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留链接信息。

本文讲述的是,在宝塔面板环境下,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

配置项目不一定是这些值,但是必要的允许上传文件,并且设置允许的值大一些,这是必要的步骤。

宝塔面板配置bug导致php上传失败的捉虫经历 - ini_all

nginx设置

nginx这边主要是限制post的报文体的大小。

client_max_body_size 50m;

邪恶的分割线,以上的内容,是常规的php上传功能检查点,但是对于本次案例来说,上述设置项目,全部都检查了,没有任何问题。但是就还是存在着上述问题。真心是头大啊。再次和老的服务器进行对比检查,最终发现宝塔5.5的nginx2.2设置,缺失了一句话!具体见下图。

宝塔面板配置bug导致php上传失败的捉虫经历 - 003

这个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;

宝塔面板配置bug导致php上传失败的捉虫经历 - 006

增加了这个文件的引用后,重启生效,症状消失。看来,确实和本条内容有关。如果后续还有问题,可能就需要再次检查这里的内容了。当然,也会有人说是nginx自带的防火墙的问题。我这里,nginx2.2不支持WAF防火墙。所以,应该就不是这里的问题了。

宝塔面板配置bug导致php上传失败的捉虫经历 - 001

关联文章

总结

看来,这可能是最新版的宝塔面板的一个小bug。不过也是蛮经典的。解决问题,也是一个挺有意思的事情。不是嘛?更多php相关经验文章。请点击这里查看:https://newsn.net/tag/php/

本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享。
转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议。
程序如此灵动~》下所有原创文章,如被用于商业用途,请您按规定支付稿费。