move_uploaded_file false 原因
要做一个移动替换图片的功能,使用了move_uploaded_file函数,但是每次都失败,
使用var_dump()打印结果是 bool(false), 没有发现更多错误信息,
于是尝试了以下方式,
一、把旧图片的相对地址改成绝对地址,失败
二、把反斜杠\改成反斜杠/,失败
三、把所有的验证注释掉,移动失败
到php.net查看手册,发现了原因
如果 filename 不是合法的上传文件,不会出现任何操作,move_uploaded_file() 将返回 FALSE。
如果 filename 是合法的上传文件,但出于某些原因无法移动,不会出现任何操作,move_uploaded_file() 将返回 FALSE。此外还会发出一条警告。
我使用move_uploaded_file函数时,仅做了转移,并未做上传,所以不符合上面的规则 “filename 不是合法的上传文件”
那怎么办呢?
最终解决方法:
使用copy(源文件路径,目标路径)函数,如果要删除原文件,使用unlink()函数
$oldImg="userfile/a/2.png";
$newImg="userfile/b/2.png";
if (copy($newImg, $oldImg)) { //如果图片已存在,新图片会自动替换旧图片
// unlink($newImg); //删除
echo "成功";
}
本文探讨了在尝试使用PHP的move_uploaded_file函数进行图片移动替换时遇到的问题,该函数返回false,没有明显的错误信息。通过排查,发现该函数要求处理的是合法上传的文件。最终解决方案是使用copy函数进行文件复制,若需要删除原文件则使用unlink函数。
1778

被折叠的 条评论
为什么被折叠?



