PHP の cURL 実際にリクエストされたヘッダを確認する方法

  PHP で cURL 拡張モジュールを利用しているときに、デバック用に実際にリクエストしているヘッダの内容を見たいときがあります。
  その場合は、以下のように CURLOPT_VERBOSE と CURLOPT_STDERR を使って、ファイルに出力することが出来ます。

// 保存するファイル
$fp = fopen('/tmp/curl.log', 'a');
// 詳細な情報を出力する
curl_setopt($ch, CURLOPT_VERBOSE, true);
// STDERR の代わりにエラーを出力するファイルポインタ
curl_setopt($ch, CURLOPT_STDERR, $fp);


  例として、Google へのアクセスを見てみます。

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'http://www.google.com/');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

// 保存するファイル
$fp = fopen('/tmp/curl.log', 'a');
// 詳細な情報を出力する
curl_setopt($ch, CURLOPT_VERBOSE, true);
// STDERR の代わりにエラーを出力するファイルポインタ
curl_setopt($ch, CURLOPT_STDERR, $fp);

$ret = curl_exec($ch);

fclose($fp);
curl_close($ch);


  これを実行すると、/tmp/curl.log には以下のように出力されます。

* About to connect() to www.google.com port 80 (#0)
*   Trying 66.249.89.147... * connected
* Connected to www.google.com (66.249.89.147) port 80 (#0)
> GET / HTTP/1.1
Host: www.google.com
Accept: */*

< HTTP/1.1 302 Found
< Location: http://www.google.co.jp/
< Cache-Control: private
< Content-Type: text/html; charset=UTF-8
< Set-Cookie: PREF=ID=c09b07d3b330fa72:TM=1234774504:LM=1234774504:S=Omlx1u3jcFB3egKo; expires=Wed, 16-Feb-2011 08:55:04 GMT; path=/; domain=.google.com
< Date: Mon, 16 Feb 2009 08:55:04 GMT
< Server: gws
< Content-Length: 221
* Connection #0 to host www.google.com left intact