0Pricing
PHP Academy · Lezione

Gestione delle directory

Elencare, creare ed eliminare directory con scandir e mkdir.

Gestione delle directory è una lezione PHP Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento PHP Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso PHP Academy include 4 lezioni in totale.

Operazioni sulle directory in PHP

PHP fornisce funzioni per elencare, creare, esplorare ed eliminare le directory sul server:

  • scandir() — elenca il contenuto di una directory
  • mkdir() — crea una directory
  • rmdir() — rimuove una directory vuota
  • glob() — trova i file che corrispondono a un pattern

scandir()

Elenca tutti i file e le directory contenuti in una directory:

<?php
$entries = scandir('/var/www/html/uploads');

// scandir includes '.' and '..'
$entries = array_diff($entries, ['.', '..']);

foreach ($entries as $entry) {
    echo $entry . PHP_EOL;
}

Corrispondenza dei pattern con glob()

glob() restituisce i file che corrispondono a un pattern in stile shell:

<?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() e permessi

Crei una o più directory annidate:

<?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";
}

Eliminazione delle directory

rmdir() rimuove solo le directory vuote. Per eliminare una directory con il suo contenuto, utilizzi una funzione ricorsiva:

<?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');

Iterazione delle directory con DirectoryIterator

Il modo orientato agli oggetti per iterare sul contenuto di una directory:

<?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

Iteri ricorsivamente su tutti i file di un albero di directory:

<?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 e chdir

Ottenga e modifichi la directory di lavoro corrente:

<?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;

Manipolazione dei percorsi

Costruisca e analizzi i percorsi dei file con costanti e funzioni portabili:

<?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);

Spazio su disco

Verifichi lo spazio su disco disponibile e totale:

<?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';

Directory temporanea SPL

Utilizzi sempre sys_get_temp_dir() per individuare la directory temporanea corretta su tutte le piattaforme:

<?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 done

Verifica rapida

Quale funzione PHP crea ricorsivamente directory annidate con una sola chiamata?

Riepilogo: gestione delle directory

Operazioni sulle directory:

  • scandir() — elenca il contenuto, inclusi . e ..
  • glob() — trova i file in base a un pattern
  • mkdir($path, 0755, true) — creazione ricorsiva
  • rmdir() — rimuove una directory vuota
  • RecursiveDirectoryIterator per l'attraversamento in profondità
  • __DIR__ e DIRECTORY_SEPARATOR per percorsi portabili

Domande Frequenti

La lezione «Gestione delle directory» è gratuita?

Sì — il testo completo di «Gestione delle directory» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso PHP Academy, passa a CoddyKit PRO. Il corso PHP Academy include 4 lezioni in totale.

Cosa imparerò in «Gestione delle directory»?

Elencare, creare ed eliminare directory con scandir e mkdir. Eserciti PHP Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare PHP Academy?

Non è richiesta alcuna esperienza precedente. PHP Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.

Quanto tempo richiede la lezione «Gestione delle directory»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione PHP Academy?

Sì. Ogni lezione PHP Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Lettura dei file con PHP
  2. Scrittura e aggiunta ai file
  3. Gestione delle directory
  4. Gestione degli upload di file
← Torna a PHP Academy