Często przy tworzeniu programu konieczne staje się usunięcie plików (przyczyny mogą być bardzo różne) iw tym przypadku z pomocą przychodzi nam odłączenie php. Dzisiaj dowiemy się, jak usuwać pliki w PHP i przyjrzymy się kilku przykładom.

Usuń pliki za pomocą odłączenia PHP

Funkcja unlink() służy do usuwania plików. Składnia tej funkcji to:

odłącz (nazwa pliku)

Ta funkcja ma wartość logiczną i dlatego zwraca TRUE w przypadku pomyślnego usunięcia pliku i FALSE w przypadku niepowodzenia. Rozważ użycie odczepić() Na przykład:

Należy zauważyć, że podczas ponownego ładowania tej strony program wygeneruje błąd. Wynika to z faktu, że przy pierwszym wywołaniu funkcji plik został już usunięty, a następnym razem nie może go znaleźć.

Istnieje kilka sposobów rozwiązania tego problemu. Na przykład możesz użyć bardziej złożonej wewnętrznej architektury programu, używając Instrukcje warunkowe jeśli . Lub po prostu umieść symbol @ przed samą funkcją, aby zignorować występujące błędy. W takim przypadku, nawet jeśli plik nie zostanie znaleziony, nie zostanie zgłoszony żaden błąd:

Usuwanie plików w PHP za pomocą unlink wcale nie jest trudne, jak mówią, łamanie nie jest budowaniem. Następnym razem dowiemy się, jak sprawdzić stan plików.

PHP to język programowania używany głównie do tworzenia dynamicznych stron internetowych. Jak każdy inny język programowania, PHP zawiera wiele funkcji, wśród których jest wiele przydatnych. Na przykład możliwość usunięcia pliku, który możesz wykorzystać w swoich skryptach.

Ta wskazówka pomoże Ci dowiedzieć się, jak to zrobić usuń plik w php korzystanie z funkcji odczepić.

Instrukcja krok po kroku:

Aby usunąć plik w PHP, możesz użyć funkcji odczepić. Na przykładzie prostego skryptu przeanalizujmy pracę odczepić:

  1. Tworzyć plik tekstowy w Edytor tekstu(vi/vim, nano, gedit lub po prostu standardowy Notatnik).
  2. Wpisz lub po prostu skopiuj do niego następujący kod:$plik="przykład.log";
    odłącz(plik $);
    ?>
  3. Zapisz (na przykład pod nazwą testunlink.php) i umieść wygenerowany plik skryptu na swoim testowym serwerze WWW. W tym samym katalogu utwórz plik example.log z dowolną zawartością. To właśnie zamierzamy usunąć.
  4. Uruchom skrypt, wywołując go w przeglądarce, a gdy ponownie zajrzysz do katalogu, zobaczysz, że pliku example.log już tam nie ma. odczepić wykonał swoją pracę!

Jak to wszystko działa:

Pierwsza linia kodu skryptu: definiujemy typ naszego skryptu.

Druga linia kodu: Po uruchomieniu stworzonego przez nas skryptu do zmiennej file zostanie przypisana wartość przykład.log(zwróć uwagę, że plik o tej samej nazwie musi znajdować się w tym samym katalogu, co skrypt, który stworzyliśmy. Po prostu utwórz go z dowolną zawartością!).

Trzeci wiersz kodu: usuń plik example.log, przekazując go jako argument do funkcji unlink.

Czwarty wiersz kodu skryptu: koniec kodu php.

Spróbujmy rozwiązać proste zadanie usunięcia jednego pliku lub kilku plików za pomocą PHP. Generalnie nie ma tu nic skomplikowanego, ale szczegółów jest sporo, a także rozwiązań, o których warto wiedzieć. W moim artykule nie zobowiązuję się do ogarnięcia ogromu, ale myślę, że potrafię wyjaśnić kilka pytań i podać kilka przykładów. Mamy zacząć?

Funkcja PHP unlink()

Zacznę od funkcji php unlink(), która usuwa plik:

głupota odczepić(strunowy$nazwa pliku[, ratunek$kontekst])

Tutaj $filename jest ścieżką do pliku, a $context (opcjonalnie) jest opisem kontekstów pracy ze strumieniami (obsługiwane w PHP od 5.0.0). Funkcja zwraca TRUE w przypadku powodzenia lub FALSE w przypadku błędu.

Przykład użycia funkcji php unlink():

$nazwapliku = "./ścieżka/do/pliku.txt";

Dlaczego ta funkcja nazywa się unlink()?

Dzieje się tak, ponieważ system plików Unix rozróżnia fizyczną lokalizację plików na nośniku i odpowiednią strukturę katalogów. Więc kiedy zapisujesz plik w pewnym momencie system plików ten punkt w drzewie katalogów jest powiązany z fizyczną lokalizacją, w której przechowywane są dane pliku. Innymi słowy, ścieżka do pliku Unix jest w rzeczywistości unikalnym identyfikatorem jednego z tych węzłów.

Warto również zauważyć, że w Uniksie możliwe jest powiązanie kilku takich punktów z tymi samymi danymi. Takie dane będą istnieć, o ile będzie do nich co najmniej jeden link. Ale jeśli wszystkie łącza zostaną zniszczone, zniszczone zostaną same dane. Tak więc funkcja unlink() jest przeznaczona do usuwania linków, a już w konsekwencji danych z pliku.

W systemie Windows nie ma czegoś takiego, a funkcja unlink() usuwa plik. Co więcej, niektóre wersje PHP dla systemu Windows w ogóle nie obsługują funkcji unlink(). W tym przypadku polecenie del jest używane przez system() lub exec() , na przykład:

$nazwapliku = "/2014/04/plik.txt";
if (isset($_ENV["WINDIR"])) (
@exec("del ". $nazwapliku);
if (file_exists($filename)) die("Błąd usuwania pliku.");
) w przeciwnym razie (!(@unlink($nazwapliku))) (
die("Błąd usuwania pliku.");
}

W tym przypadku zmienna środowiskowa $_ENV["WINDIR"] może służyć jako znacznik za pomocą platformy Windows, a sprawdzenie, czy plik został usunięty, odbywa się za pomocą funkcji php file_exists() , która sprawdza istnienie pliku.

Jak usunąć plik(i) w PHP?

W niektórych przypadkach może się zdarzyć, że funkcja unlink() nie będzie miała dostępu do usunięcia pliku, tj. otrzymujemy błąd : odmowa pozwolenia. Może to być spowodowane niepoprawnie określoną ścieżką do pliku lub brakiem praw dostępu.

Ciekawą opcją pracy ze ścieżkami plików jest użycie funkcji php getcwd() (pobiera nazwę bieżącego katalogu roboczego) i chdir() (zmienia bieżący katalog na określony), na przykład:

$ścieżka_pliku = "ścieżka/do";
$nazwa_pliku = "/2014/04/plik.txt";
$stary = getcwd();
if (!(@chdir($ścieżka_pliku))) die("Błąd otwartej ścieżki.");
if (!(@unlink($nazwa_pliku))) die("Błąd usuwania pliku.");
chdir($stary);

Jak widać, łatwiej jest w jakiś sposób nawigować i śledzić problem. Jednocześnie powrót do bieżącego katalogu $old po usunięciu nie będzie zbyteczny.

Jeśli chodzi o problemy z dostępem, tutaj możesz spróbować użyć funkcji php-chmod() (zmienia tryb dostępu do plików), na przykład:

$nazwapliku = "/2014/04/ścieżka/do/pliku.txt";
@chmod($nazwa pliku, 0666);
if (!(@unlink($nazwapliku))) die("Błąd usuwania pliku.");

Jeśli potrzebujesz usuń wszystkie pliki w katalogu wygodnie jest użyć kombinacji funkcji php array_map() (stosuje funkcję zwrotną do wszystkich elementów tablicy) i glob() (znajduje ścieżki plików pasujące do wzorca), na przykład:

array_map("odłącz", glob("jakiś/katalog/*.txt"));

Rozwiązanie problemu wielowątkowości podczas usuwania plików

Dużo trudniejsze w przypadku dużych witryn, gdzie występuje duża liczba jednoczesnych żądań (wątków) do skryptu. Jest tu kilka rozwiązań. Podam tylko jeden z nich, głównym jest użycie semafory.

Takie jak, semafor służy jako rodzaj znacznik proces. Kiedy semafor jest nabywany przez jeden proces, jego wartość zmniejsza się o jeden, a po zwolnieniu zwiększa się o jeden. W takim przypadku, jeśli aktualna wartość semafora wynosi zero, proces nie będzie w stanie go przechwycić i będzie czekał na zwolnienie semafora.

Funkcja sem_get() służy do pobierania zasobu semafora. Funkcja może uzyskać semafor o wartości innej niż jeden, a następnie kilka wątków może przechwycić semafor. Do przechwytywania używana jest funkcja sem_acquire(). Przykład:

$sem = sem_get(1);
if (sem_acquire($sem) && file_exists($filename)) @unlink($filename);
sem_remove($sem);

Zwróć uwagę, że jest tutaj używane dodatkowe sprawdzenie istnienia pliku file_exists(). Chodzi o to, że gdy pierwszy wątek pozyska semafor, usunie plik i zwolni semafor, drugi wątek może kontynuować wykonywanie bez usuwania pliku, który już nie istnieje.

Ważną rolę odgrywa tutaj funkcja sem_remove(), która zwalnia zajęty semafor. Jeśli semafor nie zostanie zwolniony, wątek równoległy pozostanie w stanie oczekiwania do końca bieżącego. Dlatego funkcja musi być poza warunkiem.

To wszystko dla mnie. Mam nadzieję, że mój artykuł był dla Ciebie przydatny lub po prostu informacyjny. Dziękuję za uwagę. Powodzenia!

o godzinie 8:00 Edytuj wiadomość

Kontynuujemy lekcję poświęconą tematowi ” Praca z plikami PHP”. Jeśli nie przeczytałeś poprzedniej, polecam ją przeczytać, a tym, którzy ją przeczytali, ruszaj dalej. W tej lekcji dowiesz się, jak usunąć utworzony lub istniejący plik za pomocą przy użyciu PHP, skopiuj lub zmień nazwę, zablokuj plik.
Cóż, jeśli jesteś gotowy, to idź do bitwy...

Usuwanie pliku w PHP

Jeśli chcesz usunąć plik, użyj funkcji unlink() PHP:

odłącz(nazwa pliku);

Nazwa pliku — wprowadź tutaj nazwę pliku, który chcesz usunąć.

Powiedzmy, że musimy usunąć plik „ plik.txt”, przykład wypełnienia będzie taki:

Odłącz("plik.txt");

Gotowy kod:

Jeśli plik „file.txt” był obecny, jego skrypt jest usuwany.

Kopiowanie pliku w PHP

Jeśli chcesz skopiować zawartość z jednego pliku do drugiego, użyj funkcji copy() PHP.

Kopiuj("plik1", "plik2");

Plik1 - nazwa pliku, z którego zostanie skopiowany tekst
- file2 - nazwa pliku, do którego zostanie skopiowany tekst

Na przykład utwórz plik o nazwie „file2.txt” na serwerze lokalnym w folderze „test-1”. Niech plik będzie pusty. Teraz wklej ten kod copy("plik.txt", "plik2.txt"); w kodzie php "plik.php":

Co my zrobiliśmy? Utworzył plik o nazwie „file.txt” za pomocą PHP, dokonał wpisu w pliku „file.txt” za pomocą PHP „ Cieszę się, że widzę Cię na blogu ", wyświetlił wynik w przeglądarce, skopiowałem tekst z pliku" plik.txt"I wklejono do pliku" plik2.txt». Nie wierzysz, że to się stało? Pamiętasz, że plik "file2.txt" był pusty?! Otwórz to! A co widzisz? Tak, zgadza się, tekst, który był w pliku „file.txt”:

Zmiana nazwy pliku w PHP

Aby zmienić nazwę pliku, użyj funkcji PHP rename():

Zmień nazwę("plik1", "plik2");

Plik1 to nazwa pliku do zastąpienia ( Przemianować)
- plik2 - tutaj musisz podać nową nazwę pliku

Oto przykład do wypełnienia:

Zmień nazwę("plik2..txt");

Tutaj gotowy kod:

Plik " plik2.txt"Zmieniono nazwę na plik" site.txt".

Myślę, że to powinno zakończyć naszą lekcję. Ale to nie wszystko, w następnej lekcji będziemy kontynuować pracę z plikami.