Introdução: por que saber trabalhar com o sistema de arquivos em PHP
Qualquer desenvolvedor web, mais cedo ou mais tarde, enfrenta a necessidade de salvar dados no servidor, fazer upload de imagens, criar arquivos temporários ou ler configurações. O PHP fornece um conjunto poderoso de funções para trabalhar com o sistema de arquivos, que permitem realizar todas essas tarefas de forma rápida e segura.
Neste artigo, abordaremos as operações mais requisitadas: leitura e escrita de arquivos, criação e exclusão de diretórios, verificação de existência de itens, além de trabalhar com caminhos. Todos os exemplos estão escritos em PHP e prontos para uso em seus projetos.
Funções principais para trabalhar com arquivos
Vamos começar com as operações básicas — abrir, ler e escrever arquivos. O PHP suporta várias formas de interagir com arquivos, e veremos as mais populares.
Abrir e fechar arquivo: fopen e fclose
A função fopen() abre um arquivo e retorna um manipulador para trabalhos futuros. Os modos de abertura determinam o que você pode fazer com o arquivo: ler (r), escrever (w), anexar (a), etc.
<?php// Abrindo arquivo para leitura$file = fopen("data.txt", "r");if ($file) { // Trabalhando com o arquivo fclose($file); // Obrigatório fechar} else { echo "Não foi possível abrir o arquivo";}?>Ler de um arquivo: fread, fgets, file_get_contents
Para ler o conteúdo, você pode usar diferentes funções dependendo da tarefa:
fread()— lê uma quantidade específica de bytes.fgets()— lê uma linha.file_get_contents()— a maneira mais simples de ler o arquivo inteiro.
<?php// Lendo o arquivo inteiro$content = file_get_contents("example.txt");echo $content;
// Lendo linha por linha$file = fopen("example.txt", "r");while (($line = fgets($file)) !== false) { echo $line . "<br>";}fclose($file);?>Escrever em um arquivo: fwrite e file_put_contents
A escrita de dados é feita com fwrite() (requer um manipulador aberto) ou file_put_contents() (uma linha e o arquivo está escrito).
<?php// Escrita rápidafile_put_contents("log.txt", "Nova entrada", FILE_APPEND);
// Escrita via fwrite$file = fopen("config.ini", "w");fwrite($file, "db_host=localhost");fwrite($file, "db_user=root");fclose($file);?>Trabalhando com diretórios
Criar, excluir e navegar por pastas é outra parte importante do trabalho com o sistema de arquivos em PHP.
Criar e excluir pastas: mkdir e rmdir
A função mkdir() cria um novo diretório. O terceiro parâmetro recursive permite criar pastas aninhadas com um único comando.
<?php// Criando uma pastamkdir("uploads", 0777);
// Criando pastas aninhadas (2025 → 03 → images)mkdir("uploads/2025/03/images", 0777, true);
// Excluindo uma pasta vaziarmdir("uploads/temp");?>Verificando a existência de arquivos e pastas
Antes de realizar operações, é sempre útil verificar se o arquivo ou diretório existe. Para isso, use as funções file_exists(), is_file() e is_dir().
<?php$path = "data/config.php";if (file_exists($path)) { echo "Arquivo ou pasta existe";}if (is_file($path)) { echo "É um arquivo";}if (is_dir("uploads")) { echo "É um diretório";}?>Obtendo a lista de arquivos em um diretório
A função scandir() retorna um array com todos os itens da pasta. Já glob() permite filtrar por máscara (por exemplo, apenas imagens).
<?php// Todos os arquivos e pastas$items = scandir("uploads");print_r($items);
// Apenas arquivos PHP$phpFiles = glob("*.php");for