[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 メーリングリストの案内