【PHP】move_uploaded_file false 解决方法

本文探讨了在尝试使用PHP的move_uploaded_file函数进行图片移动替换时遇到的问题,该函数返回false,没有明显的错误信息。通过排查,发现该函数要求处理的是合法上传的文件。最终解决方案是使用copy函数进行文件复制,若需要删除原文件则使用unlink函数。

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 "成功";
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值