2

我不断收到同样的错误。我刚刚安装了 SSL,没有运气。我已经查看了所有其他帖子,但似乎没有一个解决方案对我有用。

有谁知道我应该做什么?

致命错误:未捕获的 CurlException:77:错误设置证书验证位置:CAfile:/etc/pki/tls/certs/ca-bundle.crt CApath:/home/acmesoft/public_html/Oddsmaker/php_sdk/base_facebook.php 中没有抛出第 977 行

if ($result === false) {
  $e = new FacebookApiException(array(
    'error_code' => curl_errno($ch),
    'error' => array(
    'message' => curl_error($ch),
    'type' => 'CurlException',
    ),
  ));
  curl_close($ch);
  throw $e;
}
curl_close($ch);
return $result;
4

3 回答 3

12

Riyanto Wibowo 的反应很危险,因为您实际上是在关闭 SSL。小心走那条路。从对 php 手册的评论

请大家停止将 CURLOPT_SSL_VERIFYPEER 设置为 false 或 0。如果您的 PHP 安装没有最新的 CA 根证书捆绑包,请在 curl 网站上下载该捆绑包并将其保存在您的服务器上:

http://curl.haxx.se/docs/caextract.html

然后在你的 php.ini 文件中设置它的路径,例如在 Windows 上:

curl.cainfo=c:\php\cacert.pem

关闭 CURLOPT_SSL_VERIFYPEER 允许中间人 (MITM) 攻击,这是您不想要的!

我会将此作为评论发布,但我没有足够的声誉。

于 2015-03-04T01:52:00.047 回答
11

我和你有同样的错误,这个问题已经解决了,我只是把这 2 行

Facebook::$CURL_OPTS[CURLOPT_SSL_VERIFYPEER] = false;
Facebook::$CURL_OPTS[CURLOPT_SSL_VERIFYHOST] = 2;

在您的 Facebook 应用程序定义之后

$facebook = new Facebook(array(
  'appId'  => 'xxx',
  'secret' => 'xxx',
  'cookie' => true,
  'perms' => 'publish_stream,read_stream,email',
  'domain' => 'example.com'
))
于 2013-03-25T14:49:39.547 回答
0

您只需要将 fb_ca_chain_bundle.crt 与 base_facebook.php 放在同一文件夹中。你可以在这里得到它:https ://github.com/facebook/facebook-php-sdk/blob/master/src/fb_ca_chain_bundle.crt

于 2013-07-30T07:21:24.013 回答