使用unlink删除服务器图片时报无文件错误,但图片可正常访问求助
解决unlink删除图片时的"文件不存在"错误
这个问题我碰到过好几次啦,核心原因是你代码里用的服务器本地路径和图片实际存储的路径不匹配:
问题分析
你浏览器能访问的图片URL是http://localhost/edubuy/uploads/IMG_20180120_210433.jpg,对应的服务器本地路径应该是网站根目录下的edubuy/uploads/文件夹(比如常见的/var/www/html/edubuy/uploads/IMG_20180120_210433.jpg,具体根目录取决于你的服务器配置)。
但你代码里写的unlink(/uploads/IMG_20180120_210433.jpg)是从**服务器系统根目录(/)**开始找文件,自然找不到目标图片。
解决方案
推荐用网站根目录常量来拼接正确的本地路径,兼容性最好:
// 获取网站根目录(比如/var/www/html),再拼接图片的相对路径 $filePath = $_SERVER['DOCUMENT_ROOT'] . '/edubuy/uploads/IMG_20180120_210433.jpg'; // 先判断文件是否存在,再执行删除操作 if (file_exists($filePath)) { if (unlink($filePath)) { echo "图片删除成功"; } else { echo "删除失败,请检查文件权限"; } } else { echo "文件不存在,请确认路径是否正确"; }
额外小技巧
如果不确定路径是否正确,可以用realpath()函数验证:
echo realpath($filePath);
它会输出文件的真实本地路径,帮你快速排查路径问题。
内容的提问来源于stack exchange,提问作者user8207090
相关产品推荐
相关产品推荐

