開発用にHTTPリクエストを表示するPHPスクリプト
テストでHTTPリクエスト内容をダンプしたいので、以下のgistを参考にPHPスクリプトを開発サーバに設置。
https://gist.github.com/magnetikonline/650e30e485c0f91f2f40
phpコード
class DumpHTTPRequestToFile {
public function execute($targetFile) {
$data = sprintf(
"%s %s %s\n\nHTTP headers:\n",
$_SERVER['REQUEST_METHOD'],
$_SERVER['REQUEST_URI'],
$_SERVER['SERVER_PROTOCOL']
);
foreach ($this->getHeaderList() as $name => $value) {
$data .= $name . ': ' . $value . "\n";
}
$data .= "\nRequest body:\n";
file_put_contents(
$targetFile,
$data . file_get_contents('php://input') . "\n",
FILE_APPEND | LOCK_EX
);
echo("<pre>\n");
echo("$data\n\n");
echo("</pre>\n");
}
private function getHeaderList() {
$headerList = [];
foreach ($_SERVER as $name => $value) {
if (preg_match('/^HTTP_/',$name)) {
// convert HTTP_HEADER_NAME to Header-Name
$name = strtr(substr($name,5),'_',' ');
$name = ucwords(strtolower($name));
$name = strtr($name,' ','-');
// add to list
$headerList[$name] = $value;
}
}
return $headerList;
}
}
(new DumpHTTPRequestToFile)->execute('./dump.txt');
設置コマンド
$ vim index.php $ touch dump.txt $ chmod 666 dump.txt
表示例
GET /dev/test/ HTTP/1.1 HTTP headers: Host: xxx.example.com X-Real-Ip: x.x.x.x X-Forwarded-Proto: http Listen-Ipaddr: x.x.x.x Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 Accept-Encoding: gzip, deflate Accept-Language: ja,en-US;q=0.9,en;q=0.8 Cookie: __utma=80399112.18719; __utmb=80399112; __utmc=80399112; __utmz=80399112.1584945883.1.1.utmccn=(direct)|utmcsr=(direct)|utmcmd=(none) Request body: