# readfile

(PHP 4, PHP 5, PHP 7, PHP 8)

readfile — Realizar la salida de un fichero

### Descripción

readfile(string `$filename`, bool `$use_include_path` = `false`, resource `$context` = ?): int

Lee un fichero y lo escribe en el búfer de salida.

### Parámetros

`filename`

  El nombre del fichero a leer.

`use_include_path`

  Se puede emplear el segundo parámetro opcional y establecerlo a `true` si se desea buscar también el fichero en include_path.

`context`

  Un resource de flujos de contexto.

### Valores devueltos

Devuelve el número de bytes leídos del fichero. Si se produjo un error, devuelve `false` y, a menos que la función fuese llamada como @readfile(), se imprime un mensaje de error.

### Ejemplos

Ejemplo #1 Forzar un descarga empleando readfile()

`<?php
$fichero = 'mono.gif';
if (file_exists($fichero)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.basename($fichero).'"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($fichero));
readfile($fichero);
exit;
}
?>`

El resultado del ejemplo sería algo similar a:

### Notas

> Nota:

> readfile() no presentará problemas de memoria, incluso al enviar ficheros grandes, por sí sola. Si se encuentra un error de memoria insuficiente asegúrese que el búfer de salida está desactivado con ob_get_level().

Sugerencia

Se puede emplear un URL como nombre de fichero con esta función si las envolturas de fopen han sido activadas. Véase fopen() para más información de cómo especificar el nombre de fichero. Véanse las Protocolos y Envolturas soportados; continen enlaces con información sobre las diferentes capacidades que tienen las envolturas, notas sobre su empleo, e información de cualquier variable predefinida que podría proporcionarse.

> Nota: Soporte para context fue añadido en PHP 5.0.0. Para una descripción de `contexts`, refiérase a Flujos.

### Ver también

- fpassthru() - Escribe toda la información restante de un puntero a un archivo
- file() - Transfiere un fichero completo a un array
- fopen() - Abre un fichero o un URL
- include - include
- require - require
- virtual() - Realiza una sub-petición de Apache
- file_get_contents() - Transmite un fichero completo a una cadena
- Protocolos y Envolturas soportados