13

認証に facebook グラフ API を使用する facebook アプリケーションに取り組んでいますが、最近 facebook が IPv6 にアップグレードされ、ネットワークが IPv6 をサポートしていないため、すべての呼び出しで Host is unreachable エラーが返されるようになりました。facebook のバグを検索したところ、 CURL CURLOPT_IPRESOLVE を使用して、Facebook への要求に強制的に IPv4 を使用することもできます。

curl を使用して Facebook Graph API にリクエストを送信しようとすると、次のように通知されます。

この定数のサポートを有効にする方法、または PHP で IPv6 サポートを無効にして、IPv4 を使用して Facebook Graph API にリクエストを送信できるようにする方法を知りたいです。

私のコードは

    $url = ("https://graph.facebook.com/me/access_token?tokrn");
        $c = curl_init();
        curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($c, CURLOPT_URL, $url);
        curl_setopt($c, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4); 
        $contents = curl_exec($c);
        $err  = curl_getinfo($c,CURLINFO_HTTP_CODE);
        curl_close($c);

ありがとう

4

1 に答える 1

12

curl のバージョンを確認する

CURLOPT_IPRESOLVE は curl 7.10.8 以降で利用可能です

このサンプルコードを試してテストしてください

<?php

    $version = curl_version();

// These are the bitfields that can be used 
// to check for features in the curl build
$bitfields = Array(
            'CURL_VERSION_IPV6', 
            'CURLOPT_IPRESOLVE'
            );


foreach($bitfields as $feature)
{
    echo $feature . ($version['features'] & constant($feature) ? ' matches' : ' does not match');
    echo PHP_EOL;
}

参考までに: http://gcov.php.net/PHP_5_3/lcov_html/curl/interface.c.gcov.php

于 2012-06-27T07:49:20.160 に答える