file_get_contents() - > SSL操作失败,代码为1

时间:2015-02-25 15:44:18

标签: php json facebook ssl curl

我有这段代码可以让这些特定的Facebook页面出现在生产中多年:

$url = 'https://graph.facebook.com/<facebook site id>';
echo json_decode(file_get_contents($url))->{'likes'};

现在我们升级到PHP 5.6,它停止使用以下错误消息:

Warning: file_get_contents() [function.file-get-contents.php]: SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed in <some page> on line 182

Warning: file_get_contents() [function.file-get-contents.php]: Failed to enable crypto in <some site> on line 182

Warning: file_get_contents(https://graph.facebook.com/<facebook site id>) [function.file-get-contents.php]: failed to open stream: operation failed in <some page> on line 182

有没有一种简单的方法可以解决这个问题?

我知道有一个引用的答案,但这个答案禁用了SSL验证,我不想实施可能的安全漏洞!

1 个答案:

答案 0 :(得分:0)

默认情况下,CURLOPT_SSL_VERIFYPEER设置为TRUE,以cURL 7.10开头 您可以再次将其设置为FALSE,尽管设置CA证书会更明智(有关详细信息,请参阅http://php.net/manual/en/function.curl-setopt.php)。

另外,请记住file_get_contents在超时时将返回FALSE,因此最好: - 设置低于默认php超时0秒的超时 - 处理任何返回FALSE