Introdução: por que o PHP sabe trabalhar com arquivos?
Qualquer projeto web, mais cedo ou mais tarde, enfrenta a necessidade de salvar dados no servidor. Seja o upload do avatar de um usuário, a criação de logs de erros ou a geração de relatórios — tudo isso exige a capacidade de gerenciar arquivos e pastas. O PHP oferece um conjunto poderoso de funções para trabalhar com o sistema de arquivos, e dominá-las não é tão difícil quanto parece.
Neste artigo, abordaremos as operações principais: criação, leitura, escrita, exclusão de arquivos e diretórios, além da verificação de permissões de acesso. Todos os exemplos são escritos em PHP puro e estão prontos para uso em seus projetos.
1. Fundamentos: abrir, ler e escrever arquivos
Antes de fazer qualquer coisa com um arquivo, é necessário abri-lo. Para isso, o PHP utiliza a função fopen(). Ela retorna um recurso (um ponteiro para o arquivo) com o qual você pode trabalhar em seguida.
Modos de abertura de arquivos
O segundo parâmetro de fopen() é o modo de acesso. Aqui estão os mais populares:
'r'— somente leitura, ponteiro no início do arquivo.'w'— escrita (cria o arquivo ou limpa o existente).'a'— adicionar ao final do arquivo (cria se não existir).'x'— criação e escrita; se o arquivo já existir, ocorre um erro.
Exemplo: escrever texto em um arquivo
<?php$filename = 'test.txt';$file = fopen($filename, 'w') or die('Não foi possível abrir o arquivo');$text = "Olá, mundo!";fwrite($file, $text);fclose($file);echo 'Arquivo escrito com sucesso';?>Após a escrita, sempre feche o arquivo com a função fclose() — isso libera recursos do sistema.
Ler um arquivo linha por linha
<?php$file = fopen('test.txt', 'r');while (!feof($file)) { $line = fgets($file); echo $line . '<br>';}fclose($file);?>A função feof() verifica se o final do arquivo foi atingido. fgets() lê uma linha.
Alternativas mais simples
Para operações rápidas, o PHP oferece funções wrapper:
file_get_contents($filename)— lê o arquivo inteiro em uma string.file_put_contents($filename, $data)— escreve uma string em um arquivo (cria ou sobrescreve).
<?php// Leitura$content = file_get_contents('test.txt');echo $content;
// Escritafile_put_contents('new.txt', 'Escrita simples');?>2. Gerenciamento de diretórios: criação, exclusão, navegação
Trabalhar com pastas em PHP é quase tão simples quanto com arquivos. As principais funções são mkdir(), rmdir() e scandir().
Criar uma pasta
<?php$dir = 'uploads';if (!is_dir($dir)) { mkdir($dir, 0777, true); echo 'Pasta criada';} else { echo 'A pasta já existe';}?>O parâmetro 0777 são as permissões de acesso (máscara). O terceiro argumento true permite criar diretórios aninhados recursivamente (por exemplo, images/2024/).
Excluir uma pasta
A função rmdir() exclui apenas diretórios vazios. Se houver arquivos dentro, é necessário limpá-la primeiro:
<?phpfunction removeDir($dir) { if (!is_dir($dir)) return; $items = scandir($dir); foreach ($items as $item) { if ($item == '.' || $item == '..') continue; $path = $dir . '/' . $item; if (is_dir($path)) { removeDir($path); } else { unlink($path); } } rmdir($dir);}removeDir('temp');echo 'Pasta excluída';?>Obter a lista de arquivos em uma pasta
<?php$files = scandir('uploads');foreach ($files as $file) { if ($file != '.' && $file != '..') { echo $file . '<br>'; }}?>