在 Mac OS Yosemite 上安装 Homebrew PHP 5.5,按照这个回答的步骤steps后,我发现我可以连接到外部 SSL 主机,并且不再出现“错误编号: 56 错误字符串: SSLRead() return error -9806”的提示。
这个问题已经被解决了。
但是,现在,在我的日常工作中,我在另一个主机 Canvas API 上遇到了另一个 SSL 问题。
在终端上运行以下 Curl 命令(使用 OSX 自带的 curl)。
我有点困惑。我需要让Brew PHP Curl版本同时适用于两个API。现在,之前无法工作的那一个已经可以了,但是之前可以工作的另一个却不能工作了(抛出了"unable to get local issuer certificate"消息)。非常感谢您的帮助。
编辑:从
但是,现在,在我的日常工作中,我在另一个主机 Canvas API 上遇到了另一个 SSL 问题。
在终端上运行以下 Curl 命令(使用 OSX 自带的 curl)。
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。现在,之前无法工作的那一个已经可以了,但是之前可以工作的另一个却不能工作了(抛出了"unable to get local issuer certificate"消息)。非常感谢您的帮助。
编辑:从
php -i
得到的Curl输出: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
phpinfo()
输出中的 cURL 部分吗? - Alexander O'Maraphp.ini
文件?若是 Apple 自带的 PHP,则应该在/etc/php.ini
中。Homebrew 的php.ini
则应该在/usr/local/etc/php/5.5/php.ini
中。 - Asaph