ドキュメントに従って、常にphp://input
HTTP 要求本文が含まれているとは限りません。
スクリプトの開始時に常にストリームを開き、ユーザー アプリケーションで利用できるようにするコードがいくつかあります。
$stream = fopen('php://input', 'rb');
ユーザー アプリケーションが空のストリームから読み取ろうとするとContent-Length > 0
、ライブラリに例外をスローさせたい:
リクエストボディは利用できません。
私の問題は次のとおりです。
- ストリームが空の場合、呼び出されていないときに
feof()
戻ります。false
fread()
- このストリームはシークをサポートしていないため、
fread()
1 バイトはできません。fseek()
- 別のストリームを開い
php://input
て事前に読み取ろうとすることはできません。これは、このストリームが複数回利用可能であることに依存できないためです。 - パフォーマンス上の理由から、ユーザー アプリケーションに手を渡す前にやみくもにコピー
php://input
したくありません。php://temp
その結果、 の直後にデータが含まれているかどうかを判断することは可能ですかphp://input
fopen()
fread()
?