‘php://input’とは??

コードを眺めていたらこんな一文を目にしました。

file_get_contents( 'php://input' );

このコードが何をやっているのか全くわからなかったので調べてみました。 まず、file_get_contents()についてです。PHPのドキュメントを確認すると以下のように書かれています。

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

file_get_contents — ファイルの内容を全て文字列に読み込む

すなわち、file_get_contents()は引数に指定したファイルの内容を読み込むみたいです。使用例として、以下のような例文がありました。

<?php
$homepage = file_get_contents('http://www.example.com/');
echo $homepage;
?>

これでfile_get_contents()が何を行なっているかわかりました。問題は’php://input’の部分です。引数にしているこの部分は何を表しているのでしょうか。 PHPドキュメントを確認すると以下のように書かれています。

php://input は読み込み専用のストリームで、 リクエストの body 部から生のデータを読み込むことができます。

すなわち、php://input は、POSTの生データの読み込みを許可するということみたいです。

以上より、file_get_contents( ‘php://input’ );はPOSTの生データを読み込むということを意味しているみたいです。