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

備註:客戶的網段防火牆設定上也有問題,所以導致無法順利訪問 graph.facebook.com:443 ,問題還在檢查當中。
查到問題了,因為客戶的防火牆,將ICMP關閉了,打開後就都正常嘍。而且不需要改base_facebook.php唷

沒有留言:

張貼留言