Trabalho com o sistema de arquivos em PHP: fundamentos e exemplos práticos
Trabalhar com o sistema de arquivos é uma das tarefas-chave do desenvolvimento web em PHP. Seja para upload de imagens, gravação de logs, leitura de arquivos de configuração ou gerenciamento de dados temporários — o conhecimento das funções para trabalhar com arquivos e diretórios é necessário para todo desenvolvedor PHP. Neste artigo, vamos detalhar as operações principais: abrir, ler, escrever, fechar arquivos, bem como gerenciar pastas e permissões de acesso.
Funções principais para trabalhar com arquivos em PHP
O PHP oferece um rico conjunto de funções embutidas. Vamos analisar as mais importantes.
Abrir e fechar arquivo: fopen() e fclose()
Para começar a trabalhar com um arquivo, é necessário abri-lo usando fopen(). A função recebe dois parâmetros obrigatórios: o caminho para o arquivo e o modo de abertura. O modo determina o que você pode fazer com o arquivo: ler, escrever, adicionar dados ao final, etc.
Modos principais:
r— apenas leitura. Ponteiro no início do arquivo.r+— leitura e escrita. Ponteiro no início.w— apenas escrita. Se o arquivo existir, ele é limpo. Se não existir, é criado.w+— leitura e escrita. Limpa o arquivo ou cria um novo.a— apenas escrita no final do arquivo. Se o arquivo não existir, é criado.a+— leitura e escrita no final.
<?php$file = fopen("example.txt", "w"); // Abrimos o arquivo para escritaif ($file) { echo "Arquivo aberto com sucesso."; fclose($file); // Sempre feche o arquivo após o uso} else { echo "Não foi possível abrir o arquivo.";}?>Leitura de arquivo: fgets(), fread() e file_get_contents()
A maneira mais simples de ler um arquivo inteiro é a função file_get_contents(). Ela retorna o conteúdo como uma string.
<?php$content = file_get_contents("example.txt");echo $content;?>Se for necessário ler linha por linha (por exemplo, para arquivos grandes), use fgets() em um loop:
<?php$file = fopen("example.txt", "r");while (!feof($file)) { $line = fgets($file); echo $line . "<br>";}fclose($file);?>A função fread() permite ler uma quantidade específica de bytes:
<?php$file = fopen("example.txt", "r");$content = fread($file, 100); // Lemos os primeiros 100 bytesecho $content;fclose($file);?>Escrita em arquivo: fwrite() e file_put_contents()
Para escrever dados em um arquivo, é conveniente usar file_put_contents(). Ela abre o arquivo, escreve a string e o fecha com um único comando.
<?php$data = "Olá, mundo!";file_put_contents("example.txt", $data);?>Se for necessário adicionar dados ao final, use a flag FILE_APPEND:
<?php$data = "Nova linha";file_put_contents("example.txt", $data, FILE_APPEND);?>Para escrita mais flexível (por exemplo, em modo binário), utiliza-se fwrite():
<?php$file = fopen("example.txt", "w");fwrite($file, "String para escrita");fclose($file);?>Trabalho com diretórios em PHP
Além de arquivos, o PHP permite gerenciar pastas: criar, excluir, ler seu conteúdo.
Criação e exclusão de pastas: mkdir() e rmdir()
A função mkdir() cria um novo diretório. Como segundo parâmetro, é possível especificar as permissões de acesso (padrão 0777).
<?phpif (mkdir("new_folder", 0777)) { echo "Pasta criada.";} else { echo "Erro ao criar pasta.";}?>Para excluir uma pasta vazia, use