Tworzenie i usuwanie katalogów, prawa dostępu

Tworzenie i usuwanie katalogów w PHP pozwala na dynamiczne zarządzanie strukturą plików w aplikacji. Możesz tworzyć foldery do uploadu, zapisywania logów czy innych danych. Należy jednocześnie zadbać o prawa dostępu, aby skrypt mógł poprawnie odczytywać i zapisywać pliki.


Tworzenie, usuwanie katalogów i prawa dostępu

  • mkdir($ścieżka, $tryb, $rekursywnie)
    • Funkcja do tworzenia folderu. Argument $tryb (np. 0755) określa prawa dostępu.
    • Możesz ustawić $rekursywnie=true, by utworzyć całe drzewo katalogów naraz.
  • rmdir($ścieżka)
    • Usuwa pusty katalog. Jeśli katalog nie jest pusty, najpierw usuń pliki w środku.
  • chmod($ścieżka, $tryb)
    • Pozwala zmienić prawa dostępu do pliku/katalogu (np. 0777 do pełnego zapisu, odczytu i wykonania).
  • Prawa dostępu w systemach Unix
    • Kod w stylu 0755 oznacza odpowiednio prawa do read, write, execute dla właściciela, grupy i innych.
Przykład
<?php
$folder = "test_folder";

// Tworzenie katalogu
if (!file_exists($folder)) {
  if (mkdir($folder, 0755)) {
    echo "<p>Utworzono katalog: $folder</p>";
  } else {
    echo "<p>Nie udało się utworzyć katalogu: $folder</p>";
  }
} else {
  echo "<p>Katalog $folder już istnieje.</p>";
}

// Usunięcie katalogu (jeśli jest pusty)
if (file_exists($folder)) {
  // Najpierw sprawdź, czy jest pusty
  $sciezki = scandir($folder);
  if (count($sciezki) <= 2) {
    if (rmdir($folder)) {
      echo "<p>Usunięto pusty katalog: $folder</p>";
    } else {
      echo "<p>Nie udało się usunąć katalogu: $folder</p>";
    }
  } else {
    echo "<p>Katalog $folder nie jest pusty, nie można go usunąć rmdir()</p>";
  }
}
?>
Zwrócona zawartość
Utworzono katalog: test_folder
[Kolejne wywołanie skryptu może pokazać "Katalog test_folder już istnieje."]
Jeśli jest pusty, skrypt go usunie, w przeciwnym razie powiadomi, że nie jest pusty.

Przykładowe zastosowania tworzenia/usuwania katalogów

  • Dynamiczny upload plików
    • Dla każdego użytkownika możesz tworzyć osobny folder na przesyłane zdjęcia.
  • System logów
    • Tworzenie folderów miesięcznych (np. 2023-05) do przechowywania plików logów.
  • Czyszczenie nieużywanych folderów
    • Skrypt okresowo sprawdza katalogi i usuwa puste, które nie są już potrzebne.

Podsumowanie

  • Funkcja mkdir umożliwia tworzenie katalogów z określonymi uprawnieniami (np. 0755).
  • rmdir usuwa katalog tylko wtedy, gdy jest pusty. W przeciwnym razie trzeba ręcznie skasować pliki w środku.
  • chmod służy do zmiany praw dostępu (odczyt, zapis, wykonanie) w systemach Unix.
  • Dbaj o prawa zapisu skryptu PHP w folderze, w którym tworzysz nowe katalogi. Ustawienia zależą od konfiguracji serwera.