readfile

Outputs a file

&reftitle.description; ``int``false```readfile` `string` `filename` `bool` `use_include_path`&false; ``resource``null```context`&null;

Reads a file and writes it to the output buffer.

&reftitle.parameters;

`filename`

- The filename being read.

`use_include_path`

- You can use the optional second parameter and set it to &true;, if you want to search for the file in the include_path, too.

`context`

- ¬e.context-support;
&reftitle.returnvalues;

Returns the number of bytes read from the file on success, &return.falseforfailure;

&reftitle.errors; &fs.emits.warning.on.failure;
&reftitle.examples;

### Forcing a download using `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;
    }
    ?>

&example.outputs.similar; Open / Save dialogue
&reftitle.notes;

`readfile` will not present any memory issues, even when sending large files, on its own. If you encounter an out of memory error ensure that output buffering is off with `ob_get_level`.

&tip.fopen-wrapper;
&reftitle.seealso;

- `fpassthru`
- `file`
- `fopen`
- `include`
- `require`
- `virtual`
- `file_get_contents`
- wrappers