我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

本文讲述的是,在宝塔面板环境下,php文件上传功能失败的检测过程。为什么强调是在宝塔面板里面,因为这个错误用常规的php上传错误检测方法,无法检查出来。最终的错误检测表明:这个php文件上传的错误,是由于宝塔面板的默认配置的问题所导致的...

苏南大叔:宝塔面板配置bug导致php上传失败的捉虫经历 - bt-php-config
宝塔面板配置bug导致php上传失败的捉虫经历(图5-1)

好,大家请在这里和苏南大叔一起回顾一下,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
宝塔面板配置bug导致php上传失败的捉虫经历(图5-2)

nginx设置

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

client_max_body_size 50m;

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

苏南大叔:宝塔面板配置bug导致php上传失败的捉虫经历 - 003
宝塔面板配置bug导致php上传失败的捉虫经历(图5-3)

这个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
宝塔面板配置bug导致php上传失败的捉虫经历(图5-4)

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

苏南大叔:宝塔面板配置bug导致php上传失败的捉虫经历 - 001
宝塔面板配置bug导致php上传失败的捉虫经历(图5-5)

关联文章

总结

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

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

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   php    nginx