PHP cURL错误代码60

时间:2014-01-14 13:08:53

标签: php curl

虽然尝试在Windows上设置php环境(使用wamp)来使用Amazon PHP SDK,但当我尝试运行示例测试时,我收到以下错误:

Fatal error: Uncaught exception 'cURL_Exception' with message 'cURL resource: Resource id #10; cURL error: SSL certificate problem: unable to get local issuer certificate (cURL error code 60). See http://curl.haxx.se/libcurl/c/libcurl-errors.html for an explanation of error codes.' in C:\wamp\www\AWSSDKforPHP\lib\requestcore\requestcore.class.php on line 848

我已将以下行添加到我的php.ini

curl.cainfo = C:\Windows\ca-bundle.crt

这是我使用此VBS脚本创建的证书的位置 VBS-Script

我也重启了我的WAMP服务。

PHP index curl reference

14 个答案:

答案 0 :(得分:198)

使用此证书根证书包:

https://curl.haxx.se/ca/cacert.pem

在磁盘上复制此证书包。并在php.ini

上使用此功能
curl.cainfo = "path_to_cert\cacert.pem"

答案 1 :(得分:24)

我通过修改php.ini

上的C:\wamp\bin\apache\apache2.4.9\bin\文件来修复此问题
curl.cainfo = "C:/wamp/bin/php/php5.5.12/cacert.pem"

首先我尝试修改php.ini处的C:\wamp\bin\php\php5.5.12\文件并且它无效。

希望这可以帮助正在搜索权限php.ini的人修改

答案 2 :(得分:13)

@Overflowh我也尝试了上面的答案,但没有运气。我将php版本从5.3.24更改为5.5.8,因为此设置仅适用于php 5.3.7及更高版本。然后我发现这个http://flwebsites.biz/posts/how-fix-curl-error-60-ssl-issue我从那里下载了cacert.pem并替换了我从上面链接的curl.hxxx.se下载/制作的那个,它们都开始工作了。我试图让paypal沙盒IPN验证。很高兴在.pem交换后使用php.ini中的curl.cainfo设置,这仍然不在5.3.24中。

答案 3 :(得分:11)

        string connectionString = "SERVER=********;PORT=****;DATABASE=********;UID=********;PASSWORD=******;";
        MySqlConnection conn = new MySqlConnection(connectionString);
        MySqlCommand command = conn.CreateCommand();


        try
        {
        conn.Open();
        command.CommandText = "SHOW FULL TABLES FROM ExampleDataBase";
        }   


        catch 
        { 
            MessageBox.Show("error"); 
        }
        MySqlDataReader reader;
        reader = command.ExecuteReader();

        while (reader.Read())
        {

            string usermail = reader.GetString("email");

            string[] mail = new String[] { usermail};
            foreach (string s in mail)
            {
                listboxMails.Items.Add("email: " + s)
            }

        }

这将告诉您正在加载哪个php.ini文件,因此您知道要修改哪个。我浪费了很多时间来更改错误的php.ini文件,因为我安装了WAMP和XAMPP。

另外,在更改php.ini后,不要忘记重新启动WAMP服务器(或任何你使用的服务器)。

答案 4 :(得分:8)

@HüseyinBABAL

我收到上述证书的错误,但我尝试了这个证书及其工作。

https://gist.github.com/VersatilityWerks/5719158/download

答案 5 :(得分:3)

解决问题的最简单方法是在字段中添加以下命令。

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false);

使用它不需要添加任何证书或任何东西。

答案 6 :(得分:3)

首先,我们需要下载此证书根证书包:

https://curl.haxx.se/ca/cacert.pem

将此文件移动到某个位置,例如Wamp / Xampp文件夹中的PHP文件夹。

然后编辑你的“php.ini”:

curl.cainfo =“C:/path/to/your/cacert.pem”

<强> openssl.cafile = “C:/path/to/your/cacert.pem”

重要提示:

请确保您通过Window Explorer直接打开“php.ini”文件。 (在我的情况下:“C:\ DevPrograms \ wamp64 \ bin \ php \ php5.6.25 \ php.ini”)。

请勿在系统托盘的Wamp / Xampp图标菜单中使用“php.ini”的快捷方式。在我遇到的某些情况下,这条捷径不起作用。

保存“php.ini”后,您无需在Wamp图标中“重新启动所有服务”或关闭/重新打开CMD。

尝试使用“var_dump(openssl_get_cert_locations());” 看看行:   [ “ini_cafile”] =&GT;   string(40)“C:/path/to/your/cacert.pem”

完成。

答案 7 :(得分:2)

问题已修复,请下载https://curl.haxx.se/ca/cacert.pem并将其“放在某处”,并在php.ini中添加此行:

curl.cainfo = "C:/somewhere/cacert.pem"

PS:我尝试使用xampp在drupal上安装模块时出现此错误。

答案 8 :(得分:2)

将以下内容添加到php.ini [在路径中使用'/'而不是'\'] curl.cainfo =“path / cacert.pem”

重新启动我的XAMPP。它对我来说很好。感谢

答案 9 :(得分:2)

如果 cacert.pem 从上面的链接无效,请尝试这个为我工作

https://gist.github.com/VersatilityWerks/5719158/download

答案 10 :(得分:1)

首先,您必须从此链接下载证书

https://curl.haxx.se/ca/cacert.pem

并将其放在您想要的位置 可下载文件的名称是:cacert.pem 所以在我的情况下,我会把它放在C:\ wamp64 \ bin \ php \ cacert.pem

然后你必须指定php.ini文件的位置

例如,我使用php 7,php.ini文件位于: C:\ wamp64 \ BIN \ PHP中\ php7.0.10 \ php.ini中

因此,访问该文件并取消提交此行 ; openssl.cafile

也将它更新为看起来像这样 openssl.cafile = “C:\ wamp64 \ BIN \ PHP中\ cacert.pem”

最后重新启动你的apache服务器,这就是

答案 11 :(得分:1)

解决方案是编辑位于您的php版本中的文件php.ini(对我来说是php7.0.10) 不是apache的php.ini。您会发现像这样的注释文件; curl.cainfo 只需像curl.cainfo =“ C:\ permCertificate \ cacert.pem”那样更改此行

不要忘记创建“ permCertificate”目录并在其中复制“ cacert.pem”文件。

答案 12 :(得分:0)

只是你知道什么对我有用, https://curl.haxx.se/ca/cacert ....的文件无效,但是(http://flwebsites.biz/posts/how-fix-curl-error-60-ssl-issue)帖子中的zip文件夹中的文件对我没有任何问题。

正如其他人所说,将证书文件复制到硬盘驱动器上的某个位置,更新一行

;curl.cainfo 

在你的php.ini文件中阅读

curl.cainfo= "path_to_cert\cacert.pem"

重新启动Apache服务器。

答案 13 :(得分:0)

重要:4小时后,使用laravel 5.7和php 7. +,并运行/使用php artison服务 在localhost上尝试连接到mailgun。

重要以解决此问题不适用于ip http://127.0.0.1:8000 使用localhost或通过主机文件设置域名

好,