Praca z katalogami
Wyświetlaj zawartość, twórz i usuwaj katalogi za pomocą scandir i mkdir
Praca z katalogami to bezpłatna lekcja PHP Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej PHP Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs PHP Academy zawiera 4 lekcji w sumie.
Operacje na katalogach w PHP
PHP udostępnia funkcje do wyświetlania zawartości, tworzenia, nawigowania po katalogach i ich usuwania na serwerze:
scandir()— wyświetlanie zawartości katalogumkdir()— tworzenie katalogurmdir()— usuwanie pustego kataloguglob()— znajdowanie plików pasujących do wzorca
scandir()
Wyświetlanie wszystkich plików i katalogów znajdujących się w katalogu:
<?php
$entries = scandir('/var/www/html/uploads');
// scandir includes '.' and '..'
$entries = array_diff($entries, ['.', '..']);
foreach ($entries as $entry) {
echo $entry . PHP_EOL;
}Dopasowywanie wzorców za pomocą glob()
glob() zwraca pliki pasujące do wzorca w stylu powłoki systemowej:
<?php
// Find all PHP files in a directory
$phpFiles = glob('/var/www/html/*.php');
// Recursively with GLOB_BRACE
$logs = glob('/var/log/{app,error,access}.log', GLOB_BRACE);
foreach ($phpFiles as $file) {
echo basename($file) . PHP_EOL;
}mkdir() i uprawnienia
Tworzenie jednego lub wielu zagnieżdżonych katalogów:
<?php
$dir = '/var/www/uploads/2024/05';
// Create nested directories in one call:
if (!is_dir($dir)) {
mkdir($dir, 0755, true); // true = recursive
echo "Created: $dir";
}Usuwanie katalogów
rmdir() usuwa tylko puste katalogi. Aby usunąć katalog wraz z zawartością, należy użyć funkcji rekurencyjnej:
<?php
function deleteDir(string $path): void {
foreach (scandir($path) as $entry) {
if ($entry === '.' || $entry === '..') continue;
$full = $path . DIRECTORY_SEPARATOR . $entry;
is_dir($full) ? deleteDir($full) : unlink($full);
}
rmdir($path);
}
deleteDir('/tmp/old_cache');Iterowanie po katalogu za pomocą DirectoryIterator
Obiektowy sposób iterowania po zawartości katalogu:
<?php
$dir = new DirectoryIterator('/var/www/html/images');
foreach ($dir as $info) {
if ($info->isDot()) continue;
echo $info->getFilename();
echo ' (' . $info->getSize() . ' bytes)';
echo PHP_EOL;
}RecursiveDirectoryIterator
Rekurencyjne iterowanie po wszystkich plikach w drzewie katalogów:
<?php
$iterator = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator('/var/www/src')
);
foreach ($iterator as $file) {
if ($file->isDot()) continue;
if ($file->getExtension() === 'php') {
echo $file->getPathname() . PHP_EOL;
}
}getcwd i chdir
Pobieranie i zmiana bieżącego katalogu roboczego:
<?php
$originalDir = getcwd();
echo 'Current: ' . $originalDir . PHP_EOL;
chdir('/var/www/html');
echo 'Changed to: ' . getcwd() . PHP_EOL;
// Restore
chdir($originalDir);
echo 'Restored: ' . getcwd() . PHP_EOL;Operacje na ścieżkach
Tworzenie i analizowanie ścieżek plików za pomocą przenośnych stałych i funkcji:
<?php
// DIRECTORY_SEPARATOR = '/' on Unix, '\\' on Windows
$base = '/var/www/app';
$subPath = 'uploads' . DIRECTORY_SEPARATOR . 'images';
$full = $base . DIRECTORY_SEPARATOR . $subPath;
echo realpath($full); // resolves symlinks
// __DIR__ is the directory of the current file
$configPath = __DIR__ . '/../config/settings.json';
echo realpath($configPath);Miejsce na dysku
Sprawdzanie dostępnego i całkowitego miejsca na dysku:
<?php
$path = '/var/www';
$free = disk_free_space($path);
$total = disk_total_space($path);
$used = $total - $free;
echo 'Used: ' . round($used / 1024**3, 2) . ' GB';
echo 'Free: ' . round($free / 1024**3, 2) . ' GB';
echo 'Total: ' . round($total / 1024**3, 2) . ' GB';Katalog tymczasowy SPL
Aby znaleźć właściwy katalog tymczasowy na różnych platformach, należy zawsze używać funkcji sys_get_temp_dir():
<?php
$tmpDir = sys_get_temp_dir();
echo 'Temp dir: ' . $tmpDir;
// Create a unique temporary directory
$uniqueDir = $tmpDir . DIRECTORY_SEPARATOR . 'myapp_' . uniqid();
mkdir($uniqueDir, 0700);
// ... use directory ...
// cleanup when doneSzybkie sprawdzenie
Jaka funkcja PHP rekurencyjnie tworzy zagnieżdżone katalogi w jednym wywołaniu?
Podsumowanie: praca z katalogami
Operacje na katalogach:
scandir()— wyświetlanie zawartości, w tym . i ..glob()— znajdowanie plików na podstawie wzorcamkdir($path, 0755, true)— tworzenie rekurencyjnermdir()— usuwanie pustego katalogu- RecursiveDirectoryIterator do głębokiego przechodzenia po katalogach
__DIR__iDIRECTORY_SEPARATORdo tworzenia przenośnych ścieżek
Często zadawane pytania
Czy lekcja „Praca z katalogami” jest bezpłatna?
Tak — pełny tekst „Praca z katalogami” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu PHP Academy, przejdź na CoddyKit PRO. Kurs PHP Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Praca z katalogami”?
Wyświetlaj zawartość, twórz i usuwaj katalogi za pomocą scandir i mkdir Ćwiczysz PHP Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć PHP Academy?
Nie wymagamy żadnego doświadczenia. PHP Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „Praca z katalogami”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji PHP Academy?
Tak. Każda lekcja PHP Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Odczytywanie plików za pomocą PHP
- Zapisywanie danych w plikach i dopisywanie do nich
- Praca z katalogami
- Obsługa przesyłania plików