file_get_contents
「r」パラメータを取りません-PHPのマニュアルページを参照してください:
string file_get_contents ( string $filename [, int $flags...)
有効な$flag
値はFILE_USE_INCLUDE_PATH, FILE_TEXT, FILE_BINARY
です。
「r」フラグを削除して、再試行してください
編集-質問が更新されました。「r」フラグは無視されていたため、明らかに問題の原因ではありませんでした。
HTTP POSTに対して空の文字列を返すことに関して、PHPにバグが報告されているようです。file_get_contents
バグの説明から:
file_get_contents('php://input')
(およびfile, fopen+fread
)enctype = "multipart / form-data"を使用してフォームを送信した場合、POSTデータは返されません。
enctypeを指定せずに同じフォームを送信すると(デフォルトの「application / x-www-form-urlencoded」が使用されます)、すべて正常に機能します。
したがって、回避策は、指定されたフォームのenctypeをから変更することであるように見えますmultipart/form-data
。これは明らかに画像のアップロードには理想的ではありません-W3 FORM仕様から:
コンテンツタイプ「application/x-www-form-urlencoded」は、非ASCII文字を含む大量のバイナリデータまたはテキストを送信するには非効率的です。コンテンツタイプ「multipart/form-data」は、ファイル、非ASCIIデータ、およびバイナリデータを含むフォームを送信するために使用する必要があります。
さらに編集
このバグは、PHPバージョンで解決されたようです。読み込まれているバッファがキャリッジリターン/改行文字で始まっていないことを確認しましたか?Sitepointで説明した問題と似たような問題があります。
入力で実行strlen
してみて、長さが何であるかを確認してください。