PHP cURL错误代码60


85

尝试在Windows(使用wamp)上设置php环境以使用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索引curl参考


6
如果您不关心认证过程,可以完全禁用它 curl_setopt($rest, CURLOPT_SSL_VERIFYPEER, false);
denispyr 2015年

这为我解决了问题-stackoverflow.com/a/32095378/178163基本上可能有2个php.ini文件
George Kagan

2
对于那些像我一样第一次遇到此问题的人,据我了解(如果我错了,请纠正我),其背后的原因是,与通过浏览器进行HTTPS连接的情况不同,CURL请求无法从服务器获取证书。因此,我们需要手动下载该站点的证书并将其添加到PHP ini。客户端末端的证书验证是HTTPS连接过程的一部分,似乎可以绕开它。这就是curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false);图片。
桑迪潘·纳特

起到了魅力!!!谢谢!
Rodrigo Serzedello

Answers:


226

使用此证书根证书捆绑包:

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

将此证书捆绑包复制到磁盘上。并在此使用php.ini

curl.cainfo = "path_to_cert\cacert.pem"

10
万一这不能解决问题?我设置curl_setopt($ch, CURLOPT_CAINFO, ini_get('curl.cainfo'));并在php.ini中 [cURL] curl.cainfo = C:\dev\xampp\php\cacert.pem。该文件在那里,但仍然出现错误60。我缺少什么?
Overflowh

3
@Overflowh有两种类型php.ini:一种用于php-cli,第二种用于php-web(apache,nginx等)。您需要设置curl.cainfo = "path_to_cert\cacert.pem"一个。另一方面,如果您curl.cainfo在php信息视图中看到的是真实的,则该时间可能存在权限问题。
侯赛因BABAL

好吧,实际上我curl.cainfo在PHP信息中看不到。这是否意味着我将值放在了错误的文件中?
Overflowh

1
是的,请仔细检查您的php.ini文件位置。你需要把在网页版
侯赛因BABAL

我已经在apache php.ini中添加了,但这没有用
kasim badami 2015年

31

我通过修改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修改权的人有所帮助


1
谢谢。所要做的就是从curl.haxx.se/ca/cacert.pem下载文件,然后像您说的那样在apache php.ini文件中设置其路径。请注意,您可以将cacert放置在所需的任何位置,只需确保正确放置路径即可。另外,请确保删除分号!
Dan Zuzevich '17

1
之后不要忘记重新加载apache。
hcker2000 '18

17
php --ini

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

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


1
救生员!3天该死的故障排除,这原来是这个问题

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中。


2
我正面临着同样的问题,仅通过下载上述的.pem文件即可解决。谢谢
saqibahmad15年

4
哈哈,我简直不敢相信!我是FLWebsites.biz的所有者,在遇到这篇文章时完全没有意识到有人提到我...我写了该博客!
HTMLGuy

我一直在努力找出问题所在,经过3-4个小时,我终于迷失了这个答案。我说的很好,为什么不再尝试另一个pem文件。令人惊讶的是:它终于成功了。感谢您找到该博客:)
Sauleil 2015年

这解决了我在Windows 10,IIS下的cacert.pem问题。谢谢。
雅各(Jacouh),2017年

3
抱歉,我关闭了我的网站。直接转到源:curl.haxx.se/docs/caextract.html
HTMLGuy,2018年


5

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

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”] => string(40)“ C:/path/to/your/cacert.pem”

做完了


您关于通过资源管理器打开php.ini文件的说明确实有效!最后,我发现wamp图标中的php.ini具有不同的路径。谢谢!!!
Doctiger

3

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

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

PS:我通过尝试使用xampp在drupal上安装模块而收到此错误。


3

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

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false);

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


2

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

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



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服务器,仅此而已


1

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

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

好 ,


0

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

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


在Ampps为我工作,谢谢
Alejandro Aranda

-1

只要你知道什么工作对我来说,在文件https://curl.haxx.se/ca/cacert在(....但没有工作,一个在zip文件夹中的职位HTTP:// flwebsites .biz / posts / how-fix-curl-error-60-ssl-issue)对我来说没有任何问题。

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

;curl.cainfo 

在您的php.ini文件中阅读

curl.cainfo= "path_to_cert\cacert.pem"

重新启动您的Apache服务器。


链接的网站是垃圾邮件。
Rick Kukiela
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.