今天在本機開發好的網站,放上客戶的伺服器的時候,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唷