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

 

 

  

posted @ 2023-09-20 10:39  包子心的土豆  阅读(62)  评论(0编辑  收藏  举报