array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'pt_BR', ), 'this' => array ( 0 => 'function.readfile.php', 1 => 'readfile', ), 'up' => array ( 0 => 'ref.filesystem.php', 1 => 'Funções do sistema de arquivos', ), 'prev' => array ( 0 => 'function.popen.php', 1 => 'popen', ), 'next' => array ( 0 => 'function.readlink.php', 1 => 'readlink', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'pt_BR', 'path' => 'reference/filesystem/functions/readfile.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PHP 4, PHP 5, PHP 7, PHP 8)
readfile — Exibe o conteúdo de um arquivo
Lê um arquivo e escreve o seu conteúdo para o buffer de saída.
filename
O nome do arquivo a ser lido.
use_include_path
Pode-se usar o segundo parâmetro opcional e configurá-lo para true
,
se for desejado procurar o arquivo no include_path também.
context
Um resource de contexto de stream.
Retorna o número de bytes lidos do arquivo em caso de sucesso,
ou false
em caso de falha
Em caso de falha, um E_WARNING
será emitido.
Exemplo #1 Forçando um recebimento usando readfile()
<?php
$file = 'monkey.gif';
if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.basename($file).'"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
readfile($file);
exit;
}
?>
O exemplo acima produzirá algo semelhante a:
Nota:
readfile() não apresentará por si só nenhum problema de memória, mesmo no envio de grandes arquivos. Se for encontrado um erro de falta de memória, certifique-se que o buffer de saída está desligado com ob_get_level().
Uma URL pode ser usada como um nome de arquivo com esta função se os wrappers fopen estiverem habilitados. Consulte a função fopen() para mais detalhes sobre como especificar o nome do arquivo. Consulte os Protocolos e Wrappers suportados para obter links para informações sobre as capacidades de cada wrapper, notas de uso e informações sobre quaisquer variáveis predefinidas que eles possam fornecer.