Как удалить файл через PHP?

Как удалить файл с моего сервера с помощью PHP, если файл находится в другом каталоге?

Вот мой макет страницы:

  • projects/backend/removeProjectData.php (этот файл удаляет все мои записи для базы данных и также должен удалять связанный файл)
  • public_files/22.pdf (место, где находится файл.)

Я использую функцию unlink :

unlink('../../public_files/' . $fileName);

Но это всегда дает мне ошибку, что файл не существует. Есть идеи?

Следующее должно помочь

  • realpath – Возвращает canonicalized absolute pathname
  • is_writable – указывает, является ли имя файла доступным для записи
  • unlink – удаляет файл

Запустите свой путь к файлу через realpath, затем проверьте, доступен ли возвращаемый путь, и если да, отключите его.

 $files = [ './first.jpg', './second.jpg', './third.jpg' ]; foreach ($files as $file) { if (file_exists($file)) { unlink($file); } else { // File not found. } } 

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

Вы также можете использовать путь, рассчитанный из каталога, в котором вы в настоящее время запускаете скрипт, например:

 unlink(dirname(__FILE__) . "/../../public_files/" . $filename); 

(в PHP 5.3 Я считаю, что вы можете использовать константу __DIR__ вместо dirname() но я еще не использовал ее сам)

Решение 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); } 

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

 unlink(dirname(__FILE__) . "/img/tasks/" . 'image.jpg'); 

Раздел dirname(__FILE__) печатает базовый путь к вашему проекту. /img/tasks/ – две папки вниз от моего базового пути. И, наконец, есть мой образ, который я хочу удалить, и вы можете сделать все, что вам нужно.

При этом у меня не было проблем с получением файлов на моем сервере и их удалением.

Вы можете удалить файл, используя

 unlink($Your_file_path); 

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