fpassthru

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

fpassthruファイルポインタ上に残っているすべてのデータを出力する

説明

fpassthru(resource $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 フラグを使用するようにしましょう。 それにより、スクリプトの可搬性がより高くなります。

参考

  • readfile() - ファイルを出力する
  • fopen() - ファイルまたは URL をオープンする
  • popen() - プロセスへのファイルポインタをオープンする
  • fsockopen() - インターネット接続もしくは Unix ドメインソケット接続をオープンする

関連キーワード:  ポインタ, 出力, データ, fpassthru, ファイル, オープン, fopen, コール, stream, fsockopen