Подтвердить что ты не робот

PHP Curl CURLOPT_IPRESOLVE

Я работаю над приложением facebook, которое использует API-интерфейс facebook для аутентификации, недавно обновил facebook до IPv6, и моя сеть не поддерживает IPv6, поэтому все мои вызовы начали возвращаться. Хост является недостижимой ошибкой, я искал ошибки на facebook и обнаружил, что мы все еще можем использовать силу запросов на facebook для использования IPv4 с использованием CURL CURLOPT_IPRESOLVE.

Теперь, когда я пытаюсь отправить запрос в Facebook Graph API, используя curl, я получаю Примечание: использование константы undefined CURLOPT_IPRESOLVE - предполагается 'CURLOPT_IPRESOLVE'

Я хочу знать, как включить поддержку этой константы или как отключить поддержку IPv6 в php, чтобы я мог отправлять запрос в API-интерфейс Facebook с использованием IPv4.

Мой код

    $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);

Спасибо

4b9b3361

Ответ 1

Проверьте версию curl

CURLOPT_IPRESOLVE доступен со скручивания 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;
}

FYI: http://gcov.php.net/PHP_5_3/lcov_html/curl/interface.c.gcov.php