Как удалить файл через PHP?
Как удалить файл с моего сервера с помощью PHP, если файл находится в другом каталоге?
Вот мой макет страницы:
-
projects/backend/removeProjectData.php
(этот файл удаляет все мои записи для базы данных и также должен удалять связанный файл)
-
public_files/22.pdf
(место, где находится файл.)
Я использую функцию unlink
:
unlink('../../public_files/' . $fileName);
Но это всегда дает мне ошибку, что файл не существует. Любые идеи?
Ответы
Ответ 1
Следующее должно помочь
-
realpath
- Возвращает canonicalized absolute pathname
-
is_writable
- указывает, является ли имя файла доступным для записи
-
unlink
- Удаляет файл
Запустите свой путь к файлу через realpath, затем проверьте, доступен ли возвращаемый путь, и если да, отмените его.
Ответ 2
$files = [
'./first.jpg',
'./second.jpg',
'./third.jpg'
];
foreach ($files as $file) {
if (file_exists($file)) {
unlink($file);
} else {
// File not found.
}
}
Ответ 3
Проверьте ваши права в первую очередь на файл, чтобы убедиться, что вы можете его видеть из своих script и b), чтобы удалить его.
Вы также можете использовать путь, рассчитанный из каталога, в котором вы в настоящее время работаете script, например:
unlink(dirname(__FILE__) . "/../../public_files/" . $filename);
(в PHP 5.3 Я считаю, что вместо dirname()
можно использовать константу __DIR__
, но я еще не использовал ее сам)
Ответ 4
Решение AIO, обрабатывает все, Это не моя работа, но я только улучшил себя. Наслаждайтесь!
/**
* Unlink a file, which handles symlinks.
* @see https://github.com/luyadev/luya/blob/master/core/helpers/FileHelper.php
* @param string $filename The file path to the file to delete.
* @return boolean Whether the file has been removed or not.
*/
function unlink ( $filename ) {
// try to force symlinks
if ( is_link ($filename) ) {
$sym = @readlink ($filename);
if ( $sym ) {
return is_writable ($filename) && @unlink ($filename);
}
}
// try to use real path
if ( realpath ($filename) && realpath ($filename) !== $filename ) {
return is_writable ($filename) && @unlink (realpath ($filename));
}
// default unlink
return is_writable ($filename) && @unlink ($filename);
}
Ответ 5
Я знаю, что этот вопрос немного устарел, но это что-то простое, что очень хорошо работает для удаления изображений из моего проекта, над которым я работаю.
unlink(dirname(__FILE__) . "/img/tasks/" . 'image.jpg');
Раздел dirname(__FILE__)
печатает базовый путь к вашему проекту. /img/tasks/
- две папки вниз от моего базового пути. И наконец, там мое изображение, которое я хочу удалить, которое вы можете сделать во что угодно.
С этим у меня не было проблем с получением файлов на моем сервере и их удалением.
Ответ 6
Вы можете удалить файл, используя
unlink($Your_file_path);
но если вы удаляете из него файл http-путь, это отключение не работает должным образом. Вы должны правильно указать путь к файлу.