2013年1月3日 星期四

Facebook PHP SDK CurlException: 35 (Solve) 問題解決



今天在本機開發好的網站,放上客戶的伺服器的時候,Facebook的登入居然失敗,怎樣debug都是一樣的問題:

Fatal error: Uncaught CurlException: 35: Unknown SSL protocol error in connection to graph.facebook.com:443 thrown in ....省略.../src/base_facebook.php on line 974

原本以為是974行 catch curl 問題,搞三個多小時,原來只要加一段設定在,base_facebook.php就正常了。

解決方法:

打開 base_facebook.php
找到

  /**
   * Default options for curl.
   */
  public static $CURL_OPTS = array(
    CURLOPT_CONNECTTIMEOUT => 10,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_TIMEOUT        => 60,
    CURLOPT_USERAGENT      => 'facebook-php-3.2',
  );

在array陣列中,加入 CURLOPT_SSLVERSION => 3, 設定curl的版本,就解決了!天啊這樣簡單!

加入後如下

  /**
   * Default options for curl.
   */
 public static $CURL_OPTS = array(
    CURLOPT_SSLVERSION   => 3,
    CURLOPT_CONNECTTIMEOUT => 10,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_TIMEOUT        => 60,
    CURLOPT_USERAGENT      => 'facebook-php-3.2',
  );

存檔後,Facebook php SDK就正常了^^(灑花~~

客戶環境:
CentOS 6.3
XAMPP 1.8.1

參考文章:http://pastebin.com/xjuwN5kK

1 則留言:

匿名 提到...

此方法没有解决我的问题,不知道是什么原因,下面张贴我的解决方案,希望对别人有用:

找到
$opts[CURLOPT_SSLVERSION] = 3;
改为
$opts[CURLOPT_SSLVERSION] = CURL_SSLVERSION_TLSv1_0;