已解决:升级到 OSX 10.10 Yosemite 后,Curl POST 到 HTTPS Url
如果您遇到错误“SSLRead() return error” -9806”升级到 OSX 10.10 Yosemite 后,您并不孤单。向 SSL URL 发出 Curl POST 请求时会出现此问题。
问题源于以下事实:php 目前正在使用在 Yosemite 下使用 Apple 安全传输的 cURL 版本进行编译。但是,这些请求的许多目标 URL 不再支持 SSLv3,该功能已因 POODLE 漏洞而被禁用。
解决方案
要解决此问题,您将需要安装一个使用 cURL 和 OpenSSL 的 php 版本,而不是安全传输。这是分步指南:
-
检查 SSL 版本: 运行命令“$ php -i | grep "SSL Version"”以确认 cURL 正在使用 SecureTransport .
-
安装 Homebrew: 如果尚未安装 Homebrew 来管理软件包。更新 Homebrew 并安装必要的水龙头:“$brew tap homebrew/dupes;brew tap homebrew/versions;brew tap homebrew/php。”
-
使用 OpenSSL 安装 Curl: "brew install - -with-openssl curl。”
-
安装 php 和 Openssl:“brew install --with-homebrew-curl --with-httpd24 php55。”
-
配置 Apache 或 Nginx:
-
Apache: 添加“LoadModule php5_module /usr/local/opt/php55/libexec/apache2/libphp5.so”到“/etc/apache2/httpd.conf”并重新启动 Apache。
-
Nginx: 按照启动 fpm 的警告说明进行操作。
-
安装 PHP 扩展: 安装任何必要的 php 扩展,例如“brew install php55-mcrypt”。
-
重新检查 SSL 版本: 运行“$ php -i |再次 grep "SSL Version"" 以确保使用 OpenSSL。
现在,当您尝试向 HTTPS URL 发起 Curl POST 请求时,不应再出现“SSLRead() 返回错误 -9806”。
以上是升级到 OSX 10.10 Yosemite 后如何修复“SSLRead() 返回错误 -9806”?的详细内容。更多信息请关注PHP中文网其他相关文章!