Arquivos Diretórios com PHP

Capa Curso PHP
Tempo de leitura: 4 minutos

Arquivos Diretórios com PHP: O PHP possui uma rica coleção de funções nativas para interagir com o Sistema de Arquivos do servidor. Essa interação é fundamental para tarefas como criar logs, armazenar dados de configuração, gerenciar a estrutura de diretórios do projeto e manipular arquivos enviados por usuários (uploads).

Dominar essas funções permite que suas aplicações sejam capazes de persistir e organizar dados de forma eficaz.

1. 📂 Manipulação de Diretórios

O gerenciamento da estrutura de diretórios é feito através de funções simples e diretas.

FunçãoPropósitoExemplo PHP
mkdir()Cria um novo diretório. Pode aceitar o parâmetro opcional true para criação recursiva (criar subdiretórios ausentes).mkdir('novo_diretorio', 0777, true);
rename()Renomeia um arquivo ou diretório.rename('antigo_dir', 'novo_dir');
rmdir()Remove um diretório, mas ele deve estar vazio.rmdir('diretório_vazio');
is_dir()Verifica se o caminho especificado é um diretório.if (is_dir('logs')) { ... }
scandir()Retorna um array com a lista de arquivos e subdiretórios dentro de um diretório.$lista = scandir('imagens/');

Importante: Para excluir um diretório não vazio, você deve criar uma função recursiva que primeiro remova todos os arquivos e subdiretórios antes de chamar rmdir().

2. 📝 Operações de Arquivo (Conteúdo Direto)

Para tarefas comuns de leitura e escrita onde o arquivo não é excessivamente grande, o PHP oferece funções de conveniência que manipulam o conteúdo do arquivo diretamente.

FunçãoPropósitoExemplo PHP
file_get_contents()Lê o conteúdo inteiro de um arquivo para uma string.$conteudo = file_get_contents('config.txt');
file_put_contents()Escreve uma string no arquivo, substituindo o conteúdo. Opcionalmente, pode-se usar a flag FILE_APPEND para anexar.file_put_contents('log.txt', 'Novo registro.', FILE_APPEND);
unlink()Exclui um arquivo.unlink('arquivo_antigo.tmp');

Exemplo: Leitura Simples

PHP

<?php
// Lendo todo o conteúdo de um arquivo
$conteudo = file_get_contents('meu_arquivo.txt');
echo $conteudo; 
?>

3. 🔄 Operações de Arquivo (Fluxo/Ponteiro)

Para manipular arquivos grandes ou ter controle granular sobre a leitura (linha por linha, bloco por bloco) e a escrita, você deve usar as funções baseadas em fluxo (streams), que utilizam um ponteiro para o arquivo.

Ciclo Básico de Fluxo: fopen -> fwrite/fread -> fclose

  1. Abrir o Arquivo (fopen): O modo de abertura é crucial.
    • 'r': Somente leitura.
    • 'w': Escrita (cria o arquivo se não existir, ou zera o conteúdo se existir).
    • 'a': Anexar (mantém o conteúdo existente e escreve no final).
  2. Operar (fwrite, fread, fgets): Realiza a leitura ou escrita.
  3. Fechar o Arquivo (fclose): Libera o recurso do sistema.

Exemplo: Escrever e Ler Linha por Linha

PHP

<?php
// 1. Escrever (Append)
$arquivo_w = fopen('log.txt', 'a');
fwrite($arquivo_w, "\nNova entrada de log: " . date("H:i:s"));
fclose($arquivo_w);

// 2. Ler Linha por Linha
$arquivo_r = fopen('log.txt', 'r');
while (!feof($arquivo_r)) { // Loop até o Fim do Arquivo
    $linha = fgets($arquivo_r); // Lê uma linha por vez
    echo $linha . "<br>";
}
fclose($arquivo_r);
?>

4. 🔑 Permissões e Metadados

Permissões (chmod)

A função chmod() (change mode) é usada para alterar as permissões de acesso de um arquivo ou diretório, utilizando notação octal.

  • 0755: Comum para diretórios. Permite ao proprietário ler, escrever e executar (7), e ao grupo/outros apenas ler e executar (5).
  • 0644: Comum para arquivos. Permite ao proprietário ler e escrever (6), e ao grupo/outros apenas ler (4).

PHP

// Define permissões para que apenas o proprietário possa modificar (6), e todos possam ler (4)
chmod('meu_arquivo.txt', 0644); 

Metadados

FunçãoPropósito
file_exists()Verifica se um arquivo ou diretório existe.
filesize()Retorna o tamanho de um arquivo em bytes.
filemtime()Retorna o timestamp da última modificação do arquivo.

5. ⚠️ Boas Práticas e Segurança

  • Validação de Caminho: Sempre verifique caminhos de arquivo fornecidos pelo usuário para evitar que eles tentem acessar arquivos fora do diretório permitido (ataque de Directory Traversal).
  • Permissões: Mantenha as permissões o mais restritivas possível. Nunca defina permissões como 0777 em diretórios acessíveis pela web, exceto se for estritamente necessário para um diretório de uploads (e, mesmo assim, com cautela).
  • Use Constantes de Caminho: Utilize __DIR__ e realpath() ou constantes de configuração para construir caminhos de arquivo absolutos, tornando seu código menos suscetível a erros de caminho relativo.

✅ Conclusão Arquivos Diretórios com PHP

Arquivos Diretórios com PHP: O PHP fornece um conjunto completo de ferramentas para manipulação do sistema de arquivos. Seja através das funções simples de conteúdo (file_get_contents) ou do controle granular de fluxo (fopen), é possível realizar todas as operações necessárias. A atenção à segurança, especialmente nas permissões com chmod e na validação de caminhos, é vital para construir aplicações robustas e seguras.

Toda jornada tem um início, e o início para se tornar um desenvolvedor back-end é dominar as seguintes tecnologias, que você encontra aqui mesmo:

SQL
SQL
Capa Curso PHP
PHP
Laravel
Laravel

E se você gosta do nosso conteúdo, não deixe de contribuir adquirindo os serviços e produtos dos nossos apoiadores e empresas que somos associados:

Hospedagem Hostinger
Ofertas Amazon
Amazon Prime
Author: Thiago Rossi
Com mais de 20 anos de jornada na tecnologia, minha trajetória evoluiu do ensino técnico à arquitetura de sistemas complexos. Hoje, foco minha expertise no desenvolvimento de soluções de Inteligência Artificial nativa e análise de dados públicos, utilizando o ecossistema PHP para transformar dados brutos em transparência e eficiência. Como autor e desenvolvedor, acredito na democratização do conhecimento. Essa visão resultou em uma biblioteca de mais de 530 artigos gratuitos, cobrindo desde a base do WebDev e Infraestrutura até os bastidores da indústria de Jogos e IA. No universo de Game Design, sou autor do livro "GDD – O Guia Definitivo" e documento ativamente meus processos através de DevLogs, unindo rigor técnico e criatividade em projetos desenvolvidos com GDevelop 5. Meu compromisso é conectar engenharia de ponta com as reais oportunidades do mercado de tecnologia.