[PHP-users 16313]CURL実行後(失敗)のHEADERの取得

kenbooit @ excite.co.jp kenbooit @ excite.co.jp
2003年 6月 30日 (月) 17:38:13 JST


いつもお世話になっております。島田と申します。

イワキリさん、枡形さん色々とご指導頂き、ありがとうございました。

以前の以下のご指導を頂き、
成功時にはステータスコード200番のヘッダを確かに受け取れることを確認したのですが、
失敗時、例えば、存在しないファイルをDELETE指定した場合、
apacheのaccess_logには404のステータスコードが確かに残っていますが、
headerは取得することができませんでした。

print_r ($result);
とした場合、
成功時にはヘッダがずらずらと入っていますが、
失敗時には空っぽでした。

この他DELETE先サーバ側の何がしかの問題による失敗の場合には、
500番を返すようにしているのですが、こちらも同様でした。
curl_exec() が失敗した場合には、
全てheaderが取得できない、という状況です。

イワキリさんの環境では、404も拾えましたでしょうか。
何かヒントがございましたらば教えて頂ければと思います。
よろしくお願い致します。



****************************************************************

以下プログラム抜粋

>> $url = "http://hogehoge.co.jp/test.txt";
>> $user_agent = "Mozilla/4.0";
>> $proxy = "http://192.168.0.1:8080";
>> 
>> $ch = curl_init ($url);
>> 
>> curl_setopt ($ch, CURLOPT_PROXY, $proxy);
>> curl_setopt ($ch, CURLOPT_USERAGENT, $user_agent);
>> curl_setopt ($ch, CURLOPT_HEADER, 1);          //
header込みで出力を得る
>> curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);  //
出力を変数でも受け取れる
>> curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);
>> curl_setopt ($ch, CURLOPT_TIMEOUT, 120);
>> curl_setopt ($ch, CURLOPT_VERBOSE, 1 );
>> curl_setopt ($ch, CURLOPT_NOPROGRESS, 1);
>> curl_setopt ($ch, CURLOPT_FAILONERROR, 1 );
>> curl_setopt ($ch, CURLOPT_CUSTOMREQUEST, "DELETE" );

   $result = curl_exec($ch);
   list($header, $body) = split("(\r\n|\r|\n){2}",
$result, 2);

print ("header $header<BR><BR>");
print ("body $body<BR><BR>");

print ("header全部");
print_r ($result);


---------------------------------------------------------------------

   // $headerが何行あるかはご自身で判断して下さい
   // >成功時にはPHPでいうところの
   // >header("HTTP/1.0 200 (OK)");
   // >失敗時には
   // >header("HTTP/1.0 404 NotFound");
   // を判定する処理をここに書く

curl_setopt ($ch, CURLOPT_HEADER, 1);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
を指定しているので、headerは取得出来るはずです。
HTTP/1.0 200 (OK)
と標準出力に出てませんでしたか?

-- 
Youichi Iwakiri


PHP-users メーリングリストの案内