在调试layui.upload上传图片时候报错“请求上传接口出现异常”:
且接口返回是404,返回接口丢失了。
复盘处理流程:
花了一些事件,做了如下的一些问题筛选处理,首先要确认接口是否是通的,找一个更小的图片试下,1kb左右,如果接口不通,那么调接口就行了。我这里发现5kb以下的可以上传,150k以上就会出问题报错。那么说明接口是没有问题的!我这里用postman单独调试。
猜测有可能是php.ini、nginx上传限制问题,查看了php.ini:
upload_max_filesize = 50m ;
设置上传大小上限没有问题,范围内;查看nginx.conf:
client_max_body_size 50m;
最大限制也没有问题,也设置的足够大。
那么说明是nginx遇到问题中断了,所以返回了404,所以查看刚才上传文件反问接口后产生的错误日志(nginx日志):
找到问题结症所在,open() "/usr/local/var/run/nginx/client_body_temp/0000000001" failed (13: Permission denied),访问权限问题。
分析产生原因:
客户端POST一个比较大的文件,长度超过了nginx缓冲区的大小,需要把这个文件的部分或者全部内容暂存到client_body_temp目录下的临时文件。所以提交5Kb的数据没有问题,超过了一定的大小就需要暂存到缓存区。所以这里需要注意这样的小坑!
处理方式:
解决这个/usr/local/var/run/nginx/client_body_temp目录读写权限就行了,如下(mac下控制台):
先查看权限
ls -l
提升用户
增加读写权限
chmod -R 755 client_body_temp/
在操作接口或上传图片,没有问题。