そこで、このPHPの挙動をバイパスして、multipart/form-data の生データを取得する方法。
これは結局の所、リクエストのContent-typeを見て、Content-type: multipart/form-data の時にそのようになっている。なので、受け取ったリクエストが multipart/form-data だったら、そのContent-typeを引っぺがしてやればいい(その代わり $_FILES は使えなくなると思うけど)。
.htaccess(または環境によってhttp.confでも)に、こんな感じで引っぺがすSetEnvIfをくべてやる。
SetEnvIf content-type (multipart/form-data)(.*) MULTIPART_FORMDATA=trueしかる後、PHP側で
RequestHeader unset content-type env=MULTIPART_FORMDATA
$stdin = fopen('php://input', 'r'))こんな感じで、ストリームからPOSTの生データが取れる。
while(!feof($stdin)){
echo fgets($stdin, 1024);
}
fclose($stdin);
▼レンタルサーバー・VPS比較表を見る▼