gpt4 book ai didi

php - Curl 无法在 PHP 中使用 Filckr API 获取本地颁发者证书

转载 作者:太空宇宙 更新时间:2023-11-03 14:53:56 25 4
gpt4 key购买 nike

由于 Flickr API 完全支持 SSL,因此我执行了以下步骤

  1. http://curl.haxx.se/ca/cacert.pem 下载 .pem 文件, 重命名为 curl-
    ca-bundle.crt,并复制到C:/xampp/php/(我在Win8上使用XAMPP)

  2. 将 cacert 位置添加到我的代码中

    curl_setopt($ch, CURLOPT_CAINFO, "C:/xampp/php/curl-ca-bundle.crt");

这是我所有的 PHP 代码

 <?php

$url = 'https://api.flickr.com/services/rest/
?method=flickr.people.findByUsername
&api_key=38f6b424cbcaeb07967dc7732ddb3f32
&username=Sami';
$ca = 'C:/xampp/php/curl-ca-bundle.crt';
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_CAINFO, $ca);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$result = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Curl error: ' . curl_error($ch);
}
curl_close($ch);
echo $result;
?>

然后我得到了

Curl error: SSL certificate problem: unable to get local issuer certificate

请给我一些建议或其他解决本地证书问题的方法在 Flickr API 上。

最佳答案

我建议您在从 https 源获取数据时在 curl 调用中包含几个额外的参数 - 即:-

        curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, FALSE );
curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, 1 );

也许还有一个用户代理,因为我发现许多 api 调用因为没有用户代理而被阻止

        curl_setopt( $ch, CURLOPT_USERAGENT, 'flickr-curl-fetcher' );

我还注意到(在正确阅读您的帖子后)应该重命名 cacert.pem?这似乎不对 - 我使用以下内容并且有效。

       curl_setopt( $ch, CURLOPT_CAINFO, realpath( 'c:/wwwroot/cacert.pem' ) );


/* Full code that does return XML */


$url = 'https://api.flickr.com/services/rest/?method=flickr.people.findByUsername&api_key=38f6b424cbcaeb07967dc7732ddb3f32&username=Sami';
$ca = 'C:/xampp/php/cacert.pem';
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url );
curl_setopt($ch, CURLOPT_HEADER, 0 );
curl_setopt($ch, CURLOPT_CAINFO, realpath($ca) );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, FALSE );
curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, 1 );
curl_setopt( $ch, CURLOPT_USERAGENT, 'flickr-curl-fetcher' );

$result = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Curl error: ' . curl_error($ch);
}
curl_close( $ch );
print_r( $result );

关于php - Curl 无法在 PHP 中使用 Filckr API 获取本地颁发者证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31627403/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com