cURLでプロキシを通そうとするとハマった…
ここを参考にcURLでプロキシを通そうとするとハマりにハマりました.
問題のコードの一部抜粋↓
※PukiWiki数式表示プラグインの一部です
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
if ($use_proxy && ! in_the_net($no_proxy, API_HOST)) {
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, true);
curl_setopt($ch, CURLOPT_PROXY, $proxy_host . ':' . $proxy_port);
// Basic-auth for HTTP proxy server
if ($need_proxy_auth && isset($proxy_auth_user) && isset($proxy_auth_pass))
curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxy_auth_user . ':' . $proxy_auth_pass);
}
$teximg = curl_exec($ch);
}
if (curl_error($ch))
return 'Error! cURL: ' . curl_error($ch);
curl_close($ch);
これを実行するとこんなエラーが.
Received HTTP code 502 from proxy after CONNECT;
なんじゃこりゃ!
URLを変えてみたりプロキシを変えてみたりオプションをいろいろいじったりしても解決できず.
途方に暮れていたところ,こんな内容を発見.
CURLOPT_HTTPPROXYTUNNEL doesn’t do what you think it does. If you don’t set it, and just set CURLOPT_PROXY, it should work fine.
引用:Using PHP cURL with an HTTP Debugging Proxy
えっ?だって CURLOPT_HTTPPROXYTUNNEL って,プロキシ使いますよ~って意味なんじゃ?
だってほら.
CURLOPT_HTTPPROXYTUNNEL: TRUE を設定すると、指定された HTTP プロキシを利用します。
ダメもとで curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, true); の行をコメントアウトしてみると…
で,できた…
なんだよもう…