PHP中move_uploaded_file函数失效,始终返回‘Upload not valid’求助
问题排查与解决方案
嘿,我帮你找到问题根源啦!先看你贴的var_dump($_FILES)结果,里面avatar的error值是1——这个错误代码对应PHP的UPLOAD_ERR_INI_SIZE,意思是你上传的那张JPG文件,大小超过了PHP配置里允许的最大上传文件尺寸。这也刚好能解释为什么PNG能正常上传:因为那张PNG的大小在配置限制内,而测试的JPG超了。
下面一步步解决:
1. 先确认PHP的上传限制配置
你需要检查php.ini里的两个关键参数:
upload_max_filesize:单个文件允许上传的最大大小post_max_size:整个POST请求的总数据上限(这个值必须大于等于upload_max_filesize,因为上传文件属于POST数据的一部分)
快速查看当前配置的方法是:新建一个php文件,写入<?php phpinfo(); ?>,然后访问这个文件,在页面里搜索这两个参数,就能看到当前的数值。比如如果upload_max_filesize是2M,那你代码里写的5M限制根本没用——因为PHP在执行你的代码之前,就已经把超大文件拦截了。
2. 调整配置(如果需要)
如果当前的配置值小于你需要的5M,就修改php.ini:
upload_max_filesize = 5M post_max_size = 6M # 建议比upload_max_filesize设大一点,留些冗余空间
修改完记得重启你的Web服务器(Apache、Nginx或者PHP-FPM,看你用的是什么),配置才会生效。
3. 代码里的小坑补充
另外看你的PHP代码,用到了$imgFile和$imgExt两个变量,但没看到你定义它们的地方——这会导致生成文件名的时候出错(不过这不是当前的核心问题)。你可以补充这段代码来获取文件名和后缀:
$imgFile = $_FILES['avatar']['name']; $imgExt = strtolower(pathinfo($imgFile, PATHINFO_EXTENSION));
最后验证
调整完配置后,再上传那张JPG试试,应该就能正常通过了。如果还有问题,再打印var_dump($_FILES)看看error值,排查其他可能的问题。
内容的提问来源于stack exchange,提问作者palnic
相关产品推荐
相关产品推荐

