**我在这个项目中使用xampp。
大家都对我正在建立的库存有一个小问题。当我从数据库中删除一个对象时,我想删除我链接到它的图片。我通过给图像提供与产品相同的ID来做到这一点,所以当我删除项目时,我可以通过其ID查找要删除的图像。
问题是当我删除对象时,图像未被删除。 File_exists一直返回false。任何帮助都会很棒。
if(isset($_GET["yesdelete"])){
$id_to_delete = $_GET["yesdelete"];
$sql = mysqli_query($link,"DELETE FROM products WHERE id = $id_to_delete") or die (mysqli_error());
$pictodelete=("../Images/$id_to_delete.jpg");
if(file_exists($pictodelete)){
unlink($pictodelete);
}
header("location: inventory_list.php");
exit();
}
答案 0 :(得分:1)
尝试使用DIRECTORY_SEPARATOR代替' /'作为分隔符。 Windows对Linux文件系统路径(反斜杠)使用不同的分隔符。
我还建议重新检查文件名,有时会出现某种拼写错误或区分大小写的问题。
答案 1 :(得分:0)
使用,文件的确切物理路径。
为此,请使用以下内容:
$_SERVER['DOCUMENT_ROOT'];
使用它,获取确切的路径:
e.g。
$pictodelete = $_SERVER['DOCUMENT_ROOT'] . "/Images/" . $id_to_delete.".jpg";
希望这有效。
答案 2 :(得分:0)
我找到了答案,我要感谢所有帮助解决问题的人。我认为我的文件名预先有一个空间导致它找不到文件,但我只是php的初学者,所以我可能错了,但这解决了我的问题。
$id_delete = preg_replace('#[^0-9]#i','',$_GET["yesdelete"]); <-------- added this
$pictodelete = ("../Images/$id_delete.jpg");
if(file_exists($pictodelete)){
unlink($pictodelete);
}
答案 3 :(得分:0)
我遇到了类似的情况,问题是我的服务器正在将我的文件名转换为大写字母,所以我做了
if(file_exists(strtolower(trim($myimagefile)))==true)
并且有效