Jak usunąć plik z mojego serwera za pomocą PHP, jeśli plik znajduje się w innym katalogu?
Oto mój układ strony:
projects/backend/removeProjectData.php
(ten plik usuwa wszystkie moje wpisy w bazie danych i powinien również usunąć powiązany plik)public_files/22.pdf
(miejsce, w którym znajduje się plik).
Używam unlink
funkcji:
unlink('../../public_files/' . $fileName);
Ale to zawsze daje mi błąd, że plik nie istnieje. Jakieś pomysły?
Odpowiedzi:
Poniższe informacje powinny pomóc
realpath
- Zwraca kanonizowaną bezwzględną nazwę ścieżkiis_writable
- Informuje, czy nazwa pliku jest zapisywalnaunlink
- usuwa plikUruchom ścieżkę do pliku przez realpath, a następnie sprawdź, czy zwrócona ścieżka jest zapisywalna, a jeśli tak, odłącz ją.
źródło
źródło
file_exists
funkcji. W przeciwnym razie pojawi się błąd, jeśli plik nie istnieje.Najpierw sprawdź swoje uprawnienia do pliku, aby upewnić się, że a) widzisz go w swoim skrypcie i b) możesz go usunąć.
Możesz również użyć ścieżki obliczonej na podstawie katalogu, w którym aktualnie uruchamiasz skrypt, np .:
(w PHP 5.3 myślę, że możesz użyć
__DIR__
stałej zamiast,dirname()
ale ja jeszcze jej nie używałem)źródło
Możesz usunąć plik za pomocą
ale jeśli usuwasz plik z jego ścieżki http, to odłączenie nie działa poprawnie. Musisz podać poprawną ścieżkę do pliku.
źródło
Rozwiązanie AIO, obsługuje wszystko, to nie moja praca, ale po prostu się poprawiłem. Cieszyć się!
źródło
unlink
jako nazwy funkcji.Wiem, że to pytanie jest trochę stare, ale jest to coś prostego, które bardzo dobrze sprawdza się przy usuwaniu obrazów z mojego projektu, nad którym pracuję.
dirname(__FILE__)
Sekcja wypisuje ścieżkę bazową do projektu./img/tasks/
Są dwa foldery w dół z mojego ścieżki bazowej. I wreszcie mój obraz, który chcę usunąć, i który możesz przekształcić w wszystko, czego potrzebujesz.Dzięki temu nie miałem żadnego problemu z dostaniem się do moich plików na serwerze i ich usunięciem.
źródło