PHP unlink (); Данный файл или каталог отсутствует

Я всюду искал эту проблему и не могу найти решение. У меня есть это:

<?php
$file_name = $_GET['name'];
$file_delete = '../u/' . $file_name;
unlink($file_delete);
//header("location: $file_delete");
?>

unlink возвращает ошибку: No such file or directory, но если я попробую header("location: $file_delete"); это открывает файл (изображение в этом случае).

Где я могу ошибаться?

1

Решение

У меня та же проблема с этим (упрощенным) кодом:

if(is_file($file)) {
unlink($file);
}

Где $ file — абсолютный путь к файлу.

Следующая ошибка генерируется в производстве (у провайдера), а не при локальном тестировании:

Got error 'PHP message: PHP Warning:  unlink(/xxxx/yyyy/zzzz/abcdefg.txt): No such file or directory in /xxxx/yyyyy/zzzzz/phpfile.php on line 1234'
4

Другие решения

После некоторых исследований, unlink() похоже, не позволяет использовать относительные пути (с «../»).

Вот альтернатива:

<?php
$file_name = $_GET['name'];
$file_delete = dirname(__FILE__, 2) . '\\u\\' . $file_name;
unlink($file_delete);
?>

$file_delete здесь абсолютный путь к файлу, который вы хотите удалить.

Напоминание: / используется для систем Unix, \ для Windows.

PHP документ:
http://php.net/manual/en/function.unlink.php
http://php.net/manual/en/function.dirname.php

0

У меня также была такая же проблема с моим кодом. Что я сделал, чтобы решить эту проблему:

Сначала выполните:

            var_dump($image_variable) // var_dump($file_delete) in your case.

Выводит: string (23) (my-image-path)

Когда я начал считать строку, я нашел 22 символа. Я задавался вопросом, где 23-й?
Я проверил и тщательно просчитал, в конце я обнаружил, что в конце пути к моему изображению есть место. Поэтому я использовал функцию php trim () для удаления пробелов. Подобно,

            $trimed_path = trim($image_variable)  // trim($file_delete) in your case.

Второе: теперь выполните,

            unlink($trimed_path).

ИЛИ ПРОВЕРИТЬ, КАК

            if(unlink($trimed_path))
{
echo "File Deleted";
}
else
{
echo "Error Deleting File";
}
0

Мне понадобилось пару часов, чтобы разобраться. Как упоминалось выше, unlink () требователен к путям.

Решение:

1-й) Определите путь (вот как WordPress это кстати):

define( 'ROOTPATH', dirname(dirname(__FILE__)) . '/' );

2) Делать:

unlink(ROOTPATH.'public_html/file.jpg');
0
По вопросам рекламы [email protected]