2012-06-27 41 views
13

Tôi đã làm việc trên ứng dụng facebook sử dụng API biểu đồ facebook để xác thực, gần đây facebook được nâng cấp lên IPv6 và mạng của tôi không hỗ trợ IPv6 nên tất cả các cuộc gọi của tôi bắt đầu trở về Máy chủ là lỗi không thể truy cập được, tôi đã tìm kiếm lỗi facebook và thấy rằng chúng tôi vẫn có thể sử dụng lực lượng yêu cầu lên facebook để sử dụng IPv4 bằng CURL CURLOPT_IPRESOLVE.PHP Curl CURLOPT_IPRESOLVE

Bây giờ khi tôi cố gắng để gửi yêu cầu lên Facebook Graph API sử dụng curl tôi nhận được Chú ý: Sử dụng CURLOPT_IPRESOLVE liên tục không xác định - giả 'CURLOPT_IPRESOLVE'

Tôi muốn biết làm thế nào tôi có thể kích hoạt hỗ trợ cho các hằng số này hoặc cách tôi có thể tắt hỗ trợ IPv6 trong php để tôi có thể gửi yêu cầu tới Facebook Graph API bằng cách sử dụng IPv4.

Mã của tôi là

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

Cảm ơn

+0

lol, ai đó thực sự ghét tôi đến đây, -1 trên tất cả các câu hỏi của tôi, giữ cho nó lên nhóc ... – TilalHusain

+1

Cảm ơn bạn rất nhiều vì đã đăng câu hỏi này! Nó giải quyết vấn đề thời gian chờ của tôi. – Steven

Trả lời

12

Kiểm tra bạn curl phiên bản

CURLOPT_IPRESOLVE có sẵn từ curl 7.10.8

Hãy thử mẫu mã này để kiểm tra

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

+4

FYI, cũng quan trọng cần lưu ý rằng CURLOPT_IPRESOLVE và các hằng số liên quan chỉ được định nghĩa trong PHP 5.3 và mới hơn. Nếu bạn đang chạy 5.2, các hằng số này sẽ không thể truy cập được, ngay cả khi phiên bản libcurl của bạn hỗ trợ nó (7.10.8, như @Venu chỉ ra). Ngoài ra, ngay cả khi bạn xác định các hằng số theo cách thủ công ('define ('CURLOPT_IPRESOLVE', 113); define ('CURL_IPRESOLVE_V4', 1);'), PHP sẽ bỏ qua nó, như bạn có thể thấy trong 'static int _php_curl_setopt()' trong mã nguồn Venu liên kết đến. – Joe