生のPOSTデータが取れない

別に今まさに困っているというわけではないんだけど、PHPで生のPOSTデータが取れなくてどうしたもんだろうと思ったのでメモ。
正確にはContent-Typeがmultipart/form-dataの時に取れない。


まずは$HTTP_RAW_POST_DATAについて。


$HTTP_RAW_POST_DATA - 生の POST データ


説明
$HTTP_RAW_POST_DATA には生の POST データが格納されます。 always_populate_raw_post_data も参照ください。

なんとも味気ないが、とりあえずalways_populate_raw_post_dataを見ろということらしい。
ので見に行ってみると、


always_populate_raw_post_data boolean


常に $HTTP_RAW_POST_DATA にアクセス可能とします。 この変数には生の POST データが格納されています。指定しなかった場合は、 データの MIME 型が判別できない場合のみこの変数にアクセス可能となります。 しかし、生の POST データにアクセスする方法としては php://input のほうが推奨されます。 $HTTP_RAW_POST_DATA は、 enctype="multipart/form-data" の場合には無効です。

$HTTP_RAW_POST_DATAはmultipart/form-dataの場合には無効だということと、php://inputから読み込んだ方が良いということがわかった。
php://inputならmultipart/form-dataの時でも読めるのだろうか?



php://input は、POST の生データの読み込みを 許可します。これは $HTTP_RAW_POST_DATA に比べて メモリ消費量が少なく、特別な php.ini ディレクティブを設定する 必要がありません。php://input は、 enctype="multipart/form-data" に対しては 使用できません。

なんということか。php://inputもmultipart/form-dataの時は使えないと書いてあるではないか。
ではいったいどのようにすればmultipart/form-dataの生データが取れるのだろうか。
取れないのかなぁ。取れないんだろうなぁ。