Php File_exists не работает должным образом

0

** Я использую 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();
}
Теги:

4 ответа

1

Попробуйте использовать DIRECTORY_SEPARATOR вместо '/' в качестве разделителя. Windows использует другой разделитель для путей файловой системы (обратная косая черта), чем системы Linux.

Я также предлагаю перепроверять имя файла, иногда может быть какая-то орфографическая ошибка или вопросы, чувствительные к регистру.

0

Я столкнулся с подобной ситуацией, и проблема заключалась в том, что мой сервер конвертировал имя моего файла в заглавную букву, поэтому я сделал

if(file_exists(strtolower(trim($myimagefile)))==true)

и это сработало

0

Я нашел ответ, и я хочу поблагодарить всех, кто помог с этой проблемой. Я думаю, что у моего имени файла было пространство заранее, которое заставляло его не находить файл, но я только начинающий на php, поэтому я мог ошибаться, но это решило мою проблему.

$id_delete = preg_replace('#[^0-9]#i','',$_GET["yesdelete"]); <-------- added this

$pictodelete = ("../Images/$id_delete.jpg");
if(file_exists($pictodelete)){
unlink($pictodelete);
}
0

Используйте точный физический путь для файла.

Для этого используйте следующее:

$_SERVER['DOCUMENT_ROOT'];

И используя это, получите точный путь:

например

$pictodelete = $_SERVER['DOCUMENT_ROOT'] . "/Images/" . $id_to_delete.".jpg";

Надеюсь, это сработает.

  • 0
    Это, вероятно, не будет работать, так как я использую xampp для проекта, и файлы не загружаются на сервер, но спасибо за ответ. Я обновил свой OP, чтобы показать, что я использую xampp.
  • 1
    Xampp - не более чем локальный сервер, поэтому он должен работать.
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню