(PHP 4, PHP 5, PHP 7, PHP 8)
readfile — Выводит файл
Функция считывает файл и записывает содержимое в буфер вывода.
filenameНазвание файла, который требуется прочитать.
use_include_path
При установке для необязательного второго параметра значения true
функция также ищет файлы в списке путей директивы include_path.
contextРесурс (resource) контекста потока.
Функция возвращает количество байтов, которые считала из файла, если выполнилась успешно, или false, если возникла ошибка
При сбое функция генерирует ошибку уровня E_WARNING.
Пример #1 Пример принудительного скачивания файла функцией 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;
}
?>Вывод приведённого примера будет похож на:
Замечание:
Сама функция readfile() не вызовет проблем с памятью, даже при отправке больших файлов. При ошибках нехватки памяти буферизацию вывода отключают функцией ob_get_level().
В эту функцию в качестве имени файла можно передавать URL-адреса, если была включена директива fopen wrappers. Подробнее о том, как указать имя файла, рассказано в описании функции fopen(). В разделе «Протоколы и обёртки» также даны ссылки на информацию о способностях поддерживаемых обёрток, замечания по работе с ними и список предопределённых переменных, которые они дают.