** Я использую xampp для этого проекта.
Привет всем, у меня есть небольшая проблема с инвентарем, который я создаю. Когда я удаляю объект из базы данных, я хочу удалить картинку, с которой я связан. Я делаю это, предоставляя изображениям тот же идентификатор, что и продукт, поэтому, когда я удаляю элемент, я могу просто найти изображение для удаления через его идентификатор.
Проблема в том, что когда я удаляю объект, изображение не удаляется. 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();
}
Попробуйте использовать DIRECTORY_SEPARATOR вместо '/' в качестве разделителя. Windows использует другой разделитель для путей файловой системы (обратная косая черта), чем системы Linux.
Я также предлагаю перепроверять имя файла, иногда может быть какая-то орфографическая ошибка или вопросы, чувствительные к регистру.
Я столкнулся с подобной ситуацией, и проблема заключалась в том, что мой сервер конвертировал имя моего файла в заглавную букву, поэтому я сделал
if(file_exists(strtolower(trim($myimagefile)))==true)
и это сработало
Я нашел ответ, и я хочу поблагодарить всех, кто помог с этой проблемой. Я думаю, что у моего имени файла было пространство заранее, которое заставляло его не находить файл, но я только начинающий на php, поэтому я мог ошибаться, но это решило мою проблему.
$id_delete = preg_replace('#[^0-9]#i','',$_GET["yesdelete"]); <-------- added this
$pictodelete = ("../Images/$id_delete.jpg");
if(file_exists($pictodelete)){
unlink($pictodelete);
}
Используйте точный физический путь для файла.
Для этого используйте следующее:
$_SERVER['DOCUMENT_ROOT'];
И используя это, получите точный путь:
например
$pictodelete = $_SERVER['DOCUMENT_ROOT'] . "/Images/" . $id_to_delete.".jpg";
Надеюсь, это сработает.