13 votes

PHP Curl CURLOPT_IPRESOLVE

J'ai travaillé sur une application facebook qui utilise l'API facebook graph pour l'authentification, récemment facebook est passé à l'IPv6 et mon réseau ne supporte pas l'IPv6 donc tous mes appels ont commencé à retourner l'erreur Host is unreachable, j'ai cherché sur facebook bugs et j'ai trouvé que nous pouvons toujours utiliser la force des demandes à facebook pour utiliser l'IPv4 en utilisant CURL CURLOPT_IPRESOLVE.

Maintenant, lorsque j'essaie d'envoyer une requête à l'API Graphique Facebook en utilisant curl, j'obtiens Avis : Utilisation de la constante non définie CURLOPT_IPRESOLVE - assumed 'CURLOPT_IPRESOLVE'.

Je veux savoir comment activer la prise en charge de cette constante ou comment désactiver la prise en charge d'IPv6 en php afin de pouvoir envoyer une demande à l'API graphique Facebook en utilisant IPv4.

Mon code est le suivant

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

Gracias

12voto

Venu Points 5020

Vérifiez votre version de curl

CURLOPT_IPRESOLVE est disponible depuis curl 7.10.8

Essayez cet exemple de code pour tester

<?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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X