0Pricing
PHP Academy · Aula

Trabalho com diretórios

Liste, crie e exclua diretórios com scandir e mkdir.

Trabalho com diretórios é uma aula grátis de PHP Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de PHP Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de PHP Academy inclui 4 aulas no total.

Operações com diretórios em PHP

O PHP oferece funções para listar, criar, percorrer e excluir diretórios no servidor:

  • scandir() — lista o conteúdo do diretório
  • mkdir() — cria um diretório
  • rmdir() — remove um diretório vazio
  • glob() — encontra arquivos que correspondem a um padrão

scandir()

Liste todos os arquivos e diretórios de um diretório:

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

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

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

Correspondência de padrões com glob()

glob() retorna os arquivos que correspondem a um padrão no estilo do 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 permissões

Crie um ou vários diretórios aninhados:

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

Excluindo diretórios

rmdir() remove apenas diretórios vazios. Para excluir um diretório com conteúdo, use uma função recursiva:

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

Iteração de diretórios com DirectoryIterator

Forma OO de percorrer o conteúdo de um diretório:

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

Percorra recursivamente todos os arquivos de uma árvore de diretórios:

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

Obtenha e altere o diretório de trabalho atual:

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

Manipulação de caminhos

Crie e analise caminhos de arquivos usando constantes e funções portáveis:

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

Espaço em disco

Verifique o espaço disponível e o espaço total em disco:

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

Diretório temporário da SPL

Sempre use sys_get_temp_dir() para encontrar o diretório temporário correto em diferentes plataformas:

<?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ção rápida

Qual função do PHP cria recursivamente diretórios aninhados em uma única chamada?

Recapitulação: trabalho com diretórios

Operações com diretórios:

  • scandir() — lista o conteúdo (inclui . e ..)
  • glob() — encontra arquivos por padrão
  • mkdir($path, 0755, true) — criação recursiva
  • rmdir() — remove um diretório vazio
  • RecursiveDirectoryIterator para percorrer diretórios profundamente
  • __DIR__ e DIRECTORY_SEPARATOR para caminhos portáveis

Perguntas Frequentes

A aula “Trabalho com diretórios” é grátis?

Sim — o texto completo de “Trabalho com diretórios” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de PHP Academy, atualize para CoddyKit PRO. O curso de PHP Academy inclui 4 aulas no total.

O que vou aprender em “Trabalho com diretórios”?

Liste, crie e exclua diretórios com scandir e mkdir. Você pratica PHP Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar PHP Academy?

Nenhuma experiência prévia é necessária. PHP Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.

Quanto tempo leva a aula “Trabalho com diretórios”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de PHP Academy?

Sim. Cada aula de PHP Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Leitura de arquivos com PHP
  2. Escrita e acréscimo em arquivos
  3. Trabalho com diretórios
  4. Tratamento de envios de arquivos
← Voltar para PHP Academy