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óriomkdir()— cria um diretóriormdir()— remove um diretório vazioglob()— 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 doneVerificaçã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ãomkdir($path, 0755, true)— criação recursivarmdir()— remove um diretório vazio- RecursiveDirectoryIterator para percorrer diretórios profundamente
__DIR__eDIRECTORY_SEPARATORpara 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
- Leitura de arquivos com PHP
- Escrita e acréscimo em arquivos
- Trabalho com diretórios
- Tratamento de envios de arquivos