cakaPHP中的SSL错误,扩展名= php_openssl取消注释

时间:2015-10-13 04:01:20

标签: cakephp ssl

我正在使用cakePHP,我正在尝试使用她/他的脸书登录后在Facebook本地获取个人资料图片。

保存工作正常,我遇到的唯一问题是SSL错误,

Warning (2): file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed [APP\Controller\FacebookCpsController.php, line 98]
Warning (2): file_get_contents() [function.file-get-contents]: Failed to enable crypto [APP\Controller\FacebookCpsController.php, line 98]
Warning (2): file_get_contents(https://graph.facebook.com/10203572402389803/picture) [function.file-get-contents]: failed to open stream: operation failed [APP\Controller\FacebookCpsController.php, line 98]
Warning (2): file_put_contents(/files/user_profile) [function.file-put-contents]: failed to open stream: No such file or directory [APP\Controller\FacebookCpsController.php, line 99]

我的控制器名称是FacebookCps。

这是我的第98和99行:

line 98: $image = file_get_contents('https://graph.facebook.com/'.$uid.'/picture'); 
line 99: file_put_contents('/files/user_profile', $image); 

我的扩展名= php_openssl已经在我的php.ini中取消注释(C:/ xampp / php / phpini)

感谢您提出任何建议/帮助。

1 个答案:

答案 0 :(得分:0)

@Janelle Ann Lagatuz正如错误所说,“....例程:SSL3_GET_SERVER_CERTIFICATE:证书验证失败......”您应该下载证书包。将它放在Web服务器上的某个位置,您可以在其中访问它并授予用户读取文件的权限。然后尝试以下代码:

    $arrContextOptions=array(
    "ssl"=>array(
        "cafile" => "/path/to/bundle/ca-bundle.crt",
        "verify_peer"=> true,
        "verify_peer_name"=> true,
    ),
);

他们也是另一种方法,而不是传递证书,只需将verify_peer和verify_peer_name设置为false并按如下方式传递(您可以在此处查看此方法的说明:http://php.net/manual/en/migration56.openssl.php):

<?php
$arrContextOptions=array(
    "ssl"=>array(
        "verify_peer"=>false,
        "verify_peer_name"=>false,
    ),
);  

$image = file_get_contents('https://graph.facebook.com/'.$uid.'/picture', false, stream_context_create($arrContextOptions));

echo $response; ?>   

但请记住,这不是一个好方法,因为你没有通过证书,这打破了SSL认证,是一个安全漏洞。