関数の概要
PHPの readfile 関数は、指定したファイルの内容を直接ブラウザなどに出力するための関数です。ファイルを読み込み、内容をそのまま標準出力に送るため、特にファイルの内容をそのまま画面表示したい場合に便利です。
パラメータの説明
filename(必須):読み込みたいファイルのパスを文字列で指定します。use_include_path(省略可能):デフォルトはfalse。trueにすると、include_path も検索対象になります。
戻り値
読み込んだファイルのバイト数を返します。読み込みに失敗した場合は false を返します。
使用例
基本的な使い方
<?php
// sample.txt の内容をそのまま表示する
readfile('sample.txt');
?>
このコードは、同じディレクトリにある sample.txt の内容をそのまま画面上に出力します。
ヘッダーと併用してファイルをダウンロードさせる例
<?php
$file = 'document.pdf';
if (file_exists($file)) {
header('Content-Type: application/pdf');
header('Content-Disposition: attachment; filename="downloaded.pdf"');
readfile($file);
exit;
} else {
echo 'ファイルが見つかりません。';
}
?>
この例では、PDFファイルをブラウザで表示させずにダウンロードさせるためにHTTPヘッダーを設定し、readfile でファイルの中身を出力しています。
include_path を利用した読み込み例
<?php
// include_path に含まれるディレクトリからファイルを読み込む
readfile('config/settings.ini', true);
?>
第2引数に true を指定することで、PHPの include_path に設定されたディレクトリも検索してファイルを探します。
関連する関数
file_get_contents:ファイルの内容を文字列として取得します。fopen:ファイルを開き、細かい制御が可能です。fpassthru:ファイルポインタから最後まで読み込み、出力します。readlink:シンボリックリンクのリンク先を取得します(用途は異なります)。
まとめ
readfile はファイルの内容を直接出力したいときにとても便利な関数です。ファイルを読み込むだけでなく、HTTPヘッダーと組み合わせてファイルのダウンロード処理にもよく使われます。シンプルな操作で高速にファイルの中身を表示するため、ファイル操作初心者から実務利用まで幅広く活用できます。
