thinkphp上传文件失败的一次记录
问题出现
有用户反映上传图片报网络错误, 问题转到开发之后怀疑可能是用户上传的图片比较大导致的错误, 后面测试发现在上传8m左右大小的图片的时候就会报错, 但是报的错误不是代码里面图片大小验证规则的错误, 而是异常捕获的错误, 让我很纳闷
后来决定先让前端在页面提示允许上传的文件大小为10m 前端在调试过程中上传了一个4m左右的图片报了跨域 于是这个问题就轮到我了
排查问题
首先就是跨域 因为页面报的是跨域所以先从他查起 仔细看过代码之后发现里面是处理过跨域的 后面我在控制器方法的第一行打了日志 发现日志可以出来 说明不是跨域的问题 它只是报了跨域的错误
问题是上传图片 立马想到可能是php配置文件允许上传图片的大小没有修改 于是开始了谷歌之旅
解决问题
我先是更改了nginx允许请求体数据的大小 在 server 中 添加 client_max_body_size 10m 默认值是1m;
然后修改php.ini文件 修改请求超时时间 默认为30 将其修改为 0 max_execution_time = 0 即不限制
修改post_max_size post最大请求数据 post_max_size = 150M 默认值是8m
修改 upload_max_filesize 默认是2m 所以上传超过2m 后端接收到的文件中 error =1 size = 0 改为 upload_max_filesize = 100m
修改保存之后 我重启了服务器 可错误还在报 怀疑是不是修改没有成功 于是我用 <?php phpinfo() 做了测试 修改的值确实已经成功
问题到底出在哪?
在我不断的谷歌之后 发现有的文章提到要重启php-fpm 可这个操作已经重启了几遍了 sudo service php7.4-fpm restart
于是决定去看看php-pfm 我在他的目录里面发现了另一个php.ini 文件 好家伙 原来php和php-fpm用了不同的php.ini文件
在我把相同的配置同步到php-fpm的配置文件之后 重启 然后成功 然后下班
总结
1 如果遇到上传小图片成功 上传较大图片成功 要有敏感性
2 php的配置文件和php-pfm的可能不是同一个 重启php-fpm的命令 sudo service php7.4-fpm restart 根据自己的版本而定
3 允许上传的最大文件修改处 有nginx 以及php.ini
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战