13

我一直在开发一个使用 facebook 图形 API 进行身份验证的 facebook 应用程序,最近 facebook 升级到 IPv6,我的网络不支持 IPv6,所以我的所有调用都开始返回 Host is unreachable 错误,我搜索了 facebook 错误并发现我们仍然可以使用 CURL CURLOPT_IPRESOLVE 强制对 facebook 的请求使用 IPv4。

现在,当我尝试使用 curl 向 Facebook Graph API 发送请求时,我得到了通知:使用未定义的常量 CURLOPT_IPRESOLVE - 假定为“CURLOPT_IPRESOLVE”

我想知道如何启用对这个常量的支持,或者如何在 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 回答