Facebook PHP SDK:未知的SSL协议错误
我有一个PHP
脚本,该脚本使用Facebook SDK
为PHP
向Facebook API Graph
发出获取"请求.
I have a PHP
script who make "get" requests to the Facebook API Graph
with the Facebook SDK
for PHP
.
几天以来,我的脚本失败了(50%或更多的时间),我遇到了以下错误:
For a few days, my script fails (50% of the time, or more), I've got this error:
与graph.facebook.com:443相关的未知SSL协议错误
Unknown SSL protocol error in connection to graph.facebook.com:443
我不知道为什么,因为:
and I don't know why because:
- 我没有修改脚本.
- 我没有更改服务器上的任何内容.
- 此外,我的脚本在2台服务器上运行,而这两个服务器上都出现了问题.
以下是详细信息:
#0/var/www/oie/vendor/facebook/php-sdk-v4/src/Facebook/FacebookClient.php(216):Facebook \ HttpClients \ FacebookCurlHttpClient-> send(' https://graph.f ...','GET','',Array,60)#1/var/www/oie /vendor/facebook/php-sdk-v4/src/Facebook/Facebook.php(469):Facebook \ FacebookClient-> sendRequest(Object(Facebook \ FacebookRequest))#2/var/www/oie/vendor/facebook/php/php -sdk-v4/src/Facebook/Facebook.php(342):Facebook \ Facebook-> sendRequest('GET','273607869342343 ...',Array,NULL,NULL,NULL)#3/var/www/oie /src/AppBundle/Controller/APIGraphController.php(239):Facebook \ Facebook-> get('273607869342343 ...')#4 [内部功能]:AppBundle \ Controller \ APIGraphController-> importAction(Object(Symfony \ Component \ HttpFoundation \ Request))#5/var/www/oie/var/bootstrap.php.cache(3042):call_user_func_array(Array,Array)#6/var/www/oie/var/bootstrap.php.cache(2997) :Symfony \ Component \ HttpKernel \ HttpKernel-> handleRaw(Object(Symfony \ Component \ HttpFoundation \ Requ est),1)#7/var/www/oie/var/bootstrap.php.cache(2337):Symfony\Component\HttpKernel\HttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request),1,true )#8/var/www/oie/web/app.php(18):Symfony \ Component \ HttpKernel \ Kernel-> handle(Object(Symfony \ Component \ HttpFoundation \ Request))#9 {main}
#0 /var/www/oie/vendor/facebook/php-sdk-v4/src/Facebook/FacebookClient.php(216): Facebook\HttpClients\FacebookCurlHttpClient->send('https://graph.f...', 'GET', '', Array, 60) #1 /var/www/oie/vendor/facebook/php-sdk-v4/src/Facebook/Facebook.php(469): Facebook\FacebookClient->sendRequest(Object(Facebook\FacebookRequest)) #2 /var/www/oie/vendor/facebook/php-sdk-v4/src/Facebook/Facebook.php(342): Facebook\Facebook->sendRequest('GET', '273607869342343...', Array, NULL, NULL, NULL) #3 /var/www/oie/src/AppBundle/Controller/APIGraphController.php(239): Facebook\Facebook->get('273607869342343...') #4 [internal function]: AppBundle\Controller\APIGraphController->importAction(Object(Symfony\Component\HttpFoundation\Request)) #5 /var/www/oie/var/bootstrap.php.cache(3042): call_user_func_array(Array, Array) #6 /var/www/oie/var/bootstrap.php.cache(2997): Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object(Symfony\Component\HttpFoundation\Request), 1) #7 /var/www/oie/var/bootstrap.php.cache(2337): Symfony\Component\HttpKernel\HttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #8 /var/www/oie/web/app.php(18): Symfony\Component\HttpKernel\Kernel->handle(Object(Symfony\Component\HttpFoundation\Request)) #9 {main}
出什么问题了?
我遇到与 https://packagist.org/packages/facebook/php-sdk-v4 被放弃以供参考
问题出在SSL证书和cURL协商
the problems is with SSL certificate and cURL negotiation
我已经解决了这个变化
在vendor/facebook/graph-sdk/src/Facebook/HttpClients/FacebookCurlHttpClient.php
或vendor/facebook/php-sdk-v4/src/Facebook/HttpClients/FacebookCurlHttpClient.php
搜索public function openConnection
函数和内部选项数组添加
search public function openConnection
function and inside options array add
-
CURLOPT_SSLVERSION => 6
并更改
-
CURLOPT_SSL_VERIFYPEER => false