Trabalho com arquivos em PHP: do iniciante ao profissional em 20 minutos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Por que trabalhar com arquivos em PHP é essencial para qualquer desenvolvedor

\n\n

Imagine: você está criando uma loja virtual. Um cliente faz upload da foto de perfil, um administrador exporta um CSV com os produtos e o sistema registra cada ação em log. Sem saber como manipular o sistema de arquivos em PHP, essas tarefas se tornam uma dor de cabeça. Mas, ao dominar as técnicas básicas, você conseguirá gerenciar dados no servidor com a mesma facilidade com que edita notas no celular.

\n\n

Neste artigo, vamos explorar o trabalho com arquivos em PHP do básico ao avançado. Você aprenderá a ler e escrever dados, verificar permissões, fazer upload de arquivos para o servidor e evitar erros comuns. Vamos nessa!

\n\n

Fundamentos do sistema de arquivos em PHP

\n\n

Antes de mergulharmos no código, vamos entender as principais funções que o PHP oferece. Elas podem ser divididas em três grupos:

\n\n
    \n
  • Verificação e metadados — se o arquivo existe, qual seu tamanho, tipo e permissões.
  • \n
  • Leitura e escrita — abrir um arquivo, ler uma linha, gravar dados e fechar.
  • \n
  • Gerenciamento da estrutura de arquivos — criar, renomear e excluir arquivos e pastas.
  • \n
\n\n

A maioria das operações de manipulação de arquivos em PHP requer apenas uma ou duas linhas de código. Mas é importante entender o contexto: onde o arquivo está localizado em relação ao seu script, quais permissões o servidor web possui e como tratar erros.

\n\n

Verificando existência e permissões

\n\n

A primeira coisa a fazer antes de qualquer operação é garantir que o arquivo existe. Para isso, usamos file_exists():

\n\n
<?php\n$filename = 'config.php';\n\nif (file_exists($filename)) {\n    echo "Arquivo $filename encontrado!";\n} else {\n    echo "O arquivo não existe";\n}\n?>
\n\n

Mas apenas existir não é suficiente. É preciso verificar se ele pode ser lido ou escrito. Para isso, temos is_readable() e is_writable():

\n\n
<?php\n$file = 'dados.txt';\n\nif (is_readable($file)) {\n    echo "Pode ser lido";\n}\nif (is_writable($file)) {\n    echo "Pode ser escrito";\n}\n?>
\n\n

Isso é especialmente importante ao trabalhar com arquivos em PHP em produção — as permissões (chmod) são frequentemente a causa de erros como "Permission denied".

\n\n

Lendo arquivos em PHP: três métodos para cada necessidade

\n\n

A leitura é a operação mais comum. O PHP oferece várias abordagens, cada uma ideal para uma situação específica.

\n\n

Método 1: file_get_contents — para arquivos pequenos

\n\n

Se você precisa ler o arquivo inteiro em uma string, esta é a melhor opção. Simples, rápido e sem complicações:

\n\n
<?php\n$conteudo = file_get_contents('leia-me.txt');\necho $conteudo;\n?>
\n\n

Ideal para arquivos de configuração, templates e logs pequenos. Mas se o arquivo tiver 200 MB, é melhor evitar — a memória do servidor agradece.

\n\n

Método 2: fopen + fgets — para arquivos grandes

\n\n

Quando precisar processar um arquivo CSV enorme ou um log de vários gigabytes, use a leitura linha por linha. Isso não sobrecarrega a memória:

\n\n
<?php\n$handle = fopen('arquivo-grande.log', 'r');\nif ($handle) {\n    while (($linha = fgets($handle)) !== false) {\n        // Processa cada linha individualmente\n        echo $linha . "<br>";\n    }\n    fclose($handle);\n} else {\n    echo "Erro ao abrir o arquivo";\n}\n?>
\n\n

Observe que sempre fechamos o arquivo com fclose(). Isso libera recursos do sistema.

\n\n

Método 3: file() — lendo em um array de linhas

\n\n

Se cada linha for um registro separado (por exemplo, uma lista de e-mails), você pode obter diretamente um array:

\n\n
<?php\n$linhas = file('usuarios.txt');\nforeach ($linhas as $num_linha => $linha) {\n    echo "Linha #{$num_linha}: " . htmlspecialchars($linha) . "<br>";\n}\n?>
\n\n

Este método é prático, mas, assim como file_get_contents, carrega todo o arquivo na memória.

Blogs

Book Recommendations