(PHP 4, PHP 5, PHP 7, PHP 8)
fpassthru — ファイルポインタ上に残っているすべてのデータを出力する
$stream
): int与えられたファイルポインタを EOF まで読み、結果を出力バッファに書き出します。
ファイルに既にデータを書き終えている場合で ファイルポインタをファイルの先頭にリセットするには rewind() をコールする必要があります。
ファイルを更新したり特定のオフセットを探すのではなく 内容を出力バッファにダンプしたいだけの場合、 readfile() を使用することが可能です。 この場合、fopen() コールは必要ありません。
stream
ファイルポインタは、有効なファイルポインタである必要があり、 fopen() または fsockopen() で正常にオープンされた (そしてまだ fclose() でクローズされていない) ファイルを指している必要があります。
fpassthru() は stream
から読み込み、出力に渡した文字数を返します。
例1 バイナリファイルに対する fpassthru() の使用例
<?php
// バイナリモードでファイルをオープンする
$name = './img/ok.png';
$fp = fopen($name, 'rb');
// 正しいヘッダを送出する
header("Content-Type: image/png");
header("Content-Length: " . filesize($name));
// 画像をダンプしスクリプトを終了する
fpassthru($fp);
exit;
?>
注意:
fpassthru() を Windows システムのバイナリファイルで 使用する場合、fopen() をコールする際に モードに
b
を追加してバイナリモードでファイルを オープンするようにしてください。バイナリファイルを扱う場合は、必要でなくても
b
フラグを使用するようにしましょう。 それにより、スクリプトの可搬性がより高くなります。