Leitura de arquivos com PHP
Leia o conteúdo de arquivos usando file_get_contents e fopen/fread.
Leitura de arquivos com PHP é uma aula grátis de PHP Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de PHP Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de PHP Academy inclui 4 aulas no total.
PHP e o sistema de arquivos
O PHP pode ler, gravar e gerenciar arquivos no sistema de arquivos do servidor. Principais funções para leitura:
file_get_contents()— lê o arquivo inteiro como uma stringfopen()+fread()— leitura baseada em fluxofile()— lê o arquivo para um array de linhas
file_get_contents()
A forma mais simples de ler todo o conteúdo de um arquivo para uma string:
<?php
$content = file_get_contents('/var/www/html/data.txt');
if ($content === false) {
echo 'Could not read file';
} else {
echo $content;
echo strlen($content) . ' bytes';
}Verificando se um arquivo existe
Sempre verifique antes de ler para evitar erros:
<?php
$path = '/var/data/config.json';
if (!file_exists($path)) {
die('Config file not found');
}
if (!is_readable($path)) {
die('No permission to read file');
}
$json = file_get_contents($path);
$config = json_decode($json, true);file() — leitura para um array
file() lê um arquivo e retorna cada linha como um elemento de um array:
<?php
$lines = file('data.csv', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
foreach ($lines as $lineNum => $line) {
echo ($lineNum + 1) . ': ' . $line . PHP_EOL;
}fopen, fread, fclose
Leitura de baixo nível baseada em fluxo para arquivos grandes — processe o conteúdo sem carregá-lo inteiro na memória:
<?php
$handle = fopen('large_file.txt', 'r');
if ($handle === false) die('Cannot open file');
// Read 1KB at a time
while (!feof($handle)) {
$chunk = fread($handle, 1024);
echo $chunk;
}
fclose($handle);fgets para leitura linha a linha
fgets() lê uma linha por vez — usando pouca memória em arquivos grandes:
<?php
$handle = fopen('server.log', 'r');
while (($line = fgets($handle)) !== false) {
if (str_contains($line, 'ERROR')) {
echo 'Found error: ' . $line;
}
}
fclose($handle);Lendo arquivos remotos
file_get_contents() também pode ler de URLs HTTP se allow_url_fopen estiver habilitado:
<?php
$json = file_get_contents('https://api.example.com/data.json');
// Prefer cURL for more control and error handling
$ch = curl_init('https://api.example.com/data.json');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);SplFileObject
SplFileObject fornece uma interface OO para operações com arquivos:
<?php
$file = new SplFileObject('data.txt', 'r');
foreach ($file as $lineNum => $line) {
echo $lineNum . ': ' . $line;
}
// Read specific line:
$file->seek(5);
echo $file->current(); // line 6 (0-indexed)Lendo arquivos JSON
Um padrão comum: leia e decodifique um arquivo de configuração JSON:
<?php
function loadJsonConfig(string $path): array {
if (!file_exists($path)) {
throw new RuntimeException("Config not found: $path");
}
$json = file_get_contents($path);
$data = json_decode($json, true);
if (json_last_error() !== JSON_ERROR_NONE) {
throw new RuntimeException('Invalid JSON: ' . json_last_error_msg());
}
return $data;
}
$cfg = loadJsonConfig('/app/config.json');Informações do arquivo
Obtenha metadados sobre um arquivo sem ler seu conteúdo:
<?php
$path = '/var/www/html/image.jpg';
echo filesize($path); // bytes
echo filetype($path); // 'file'
echo filemtime($path); // last modified timestamp
echo date('Y-m-d', filemtime($path));
$info = pathinfo($path);
echo $info['dirname']; // /var/www/html
echo $info['basename']; // image.jpg
echo $info['extension']; // jpgBloqueando arquivos
Use o bloqueio de arquivos para evitar conflitos de gravação simultâneos:
<?php
$handle = fopen('counter.txt', 'r+');
if (flock($handle, LOCK_EX)) { // exclusive lock
$count = (int) fread($handle, 20);
$count++;
fseek($handle, 0);
fwrite($handle, $count);
fflush($handle);
flock($handle, LOCK_UN); // release
}
fclose($handle);Verificação rápida
Qual função do PHP lê um arquivo inteiro para uma string em uma única chamada?
Recapitulação: leitura de arquivos
Elementos essenciais da leitura de arquivos:
file_get_contents()— arquivo inteiro como stringfile()— arquivo como array de linhasfopen/fread/fclose— fluxo para arquivos grandesfgets()— leitura do fluxo linha a linha- Sempre verifique file_exists e is_readable primeiro
- Use flock para garantir a segurança do acesso simultâneo
Perguntas Frequentes
A aula “Leitura de arquivos com PHP” é grátis?
Sim — o texto completo de “Leitura de arquivos com PHP” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de PHP Academy, atualize para CoddyKit PRO. O curso de PHP Academy inclui 4 aulas no total.
O que vou aprender em “Leitura de arquivos com PHP”?
Leia o conteúdo de arquivos usando file_get_contents e fopen/fread. Você pratica PHP Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar PHP Academy?
Nenhuma experiência prévia é necessária. PHP Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.
Quanto tempo leva a aula “Leitura de arquivos com PHP”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de PHP Academy?
Sim. Cada aula de PHP Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Leitura de arquivos com PHP
- Escrita e acréscimo em arquivos
- Trabalho com diretórios
- Tratamento de envios de arquivos