在Mac OS Yosemite上安装Homebrew PHP 5.5之后,我发现我可以连接到外部SSL主机,之前提示我'Error Number:56 Error String:SSLRead() return error -9806' . 这个问题已经解决 .
但现在,在我的日常工作中,我遇到了另一个HOST:Canvas API的另一个SSL问题 .
在终端上运行以下Curl(使用OSX本机卷曲)
curl -v -H "Accept: application/json" -H "Content-type: application/json" -X GET \
-d '{"userid": "mohit", "password":"password"}' https://canvas.instructure.com/api/v1/accounts
工作正常,但通过PHP我收到SSL证书问题:无法获得本地颁发者证书 .
所以我现在修复了我在PHP Curling中使用OpenSSL的原始问题,但是我遇到了这个新问题 .
我确实尝试将一个PEM文件添加到我的php.ini, curl.cainfo = "/usr/local/cacert.pem"
但是这引发了另一个错误
error setting certificate verify locations: CAfile: /usr/local/cacert.pem CApath: none.
我有点不解 . 我需要让Brew PHP Curl版本适用于两个API . 现在那个不工作的人正在工作,但另一个工作的人却没有 . (抛出无法获得本地发行人的证书消息) . 任何智慧都会受到赞赏 .
EDIT : php -i
的卷曲输出:
cURL support => enabled
cURL Information => 7.38.0
Age => 3
Features
AsynchDNS => No
CharConv => No
Debug => No
GSS-Negotiate => No
IDN => No
IPv6 => Yes
krb4 => No
Largefile => Yes
libz => Yes
NTLM => Yes
NTLMWB => Yes
SPNEGO => No
SSL => Yes
SSPI => No
TLS-SRP => Yes
Protocols => dict, file, ftp, ftps, gopher, http, https, imap, imaps, ldap, ldaps,
pop3, pop3s, rtsp, smtp, smtps, telnet, tftp
Host => x86_64-apple-darwin14.0.0
SSL Version => OpenSSL/1.0.1j
ZLib Version => 1.2.5
1 回答
这看起来是自制的卷曲公式中的一个错误,我只是submitted a fix .
https://canvas.instructure.com/
拥有由GoDaddy颁发的证书,而这些证书似乎与使用酿造openssl
的酿造curl
无法合作 . 如果/当自制软件的维护者接受我的补丁时,你将能够简单地得到这个修复:在此之前,您可以直接从我的pull请求安装修复程序,如下所示:
更新:
自制维护者merged my patch所以修复现在正式在自制软件中 . 所以只需运行我上面描述的前3个命令 . 无需再从pull请求安装 .