PHP 5.0.4 の readfile() や fpassthru() が 2000000 バイトで停止してしまうというバグがあるらしいです。
今日1時間近くハマりましたよ。。。

8MB くらいのオーディオファイルを呼んできて再生するスクリプトを作っていたのですが、どうも途中で止まってしまう。Content-Length が間違っているのかと思ったらちゃんとあってるし、ファイル実体が 2000000 バイトきっかりなはずないのでおかしいなぁと思っていたのですが。。。

仕方ないので、fread() を使うことにしました。

http://pukiwiki.sourceforge.jp/dev/?BugTrack2%2F102