为了账号安全,请及时绑定邮箱和手机立即绑定

osx 10.10 CURL POST到HTTPS url给出SSLRead()错误

osx 10.10 CURL POST到HTTPS url给出SSLRead()错误

C++
梦里花落0921 2019-12-12 14:10:04
我最近才升级到OSX 10.10 Yosemite,由于升级,我无法再将Curl POST转换为SSL url。我首先使用了wordpress的wp_remote_request调用,还尝试在php中使用curl。两者(按预期)给出相同的错误消息:错误号:56错误字符串:SSLRead()返回错误-9806注意:当我将POST卷曲到HTTP时,它可以正常工作。我认为这是PHP.ini或apache中的设置(升级后丢失了原始的HTTPD.conf文件...)。谁能帮我吗?
查看完整描述

3 回答

?
慕沐林林

TA贡献2016条经验 获得超9个赞

我已经看到当使用在优胜美地下使用Apple的Secure Transport的cURL版本编译php 且URL请求的目标不支持SSLv3(由于POODLE漏洞而被禁用)时,会发生此错误。该命令的输出是什么?


$ php -i | grep "SSL Version"

我怀疑您会看到以下内容:


SSL Version => SecureTransport

您可以通过安装php版本来解决此问题,该版本使用cURL版本使用OpenSSL而不是SecureTransport。使用自制程序最容易做到这一点。因此,如果尚未安装,请先安装。如果已安装自制软件,但brew update自升级到优胜美地以来您还没有运行过,请首先执行此操作。还要确保您已安装XCode> = 6.1和最新的XCode命令行工具。brew doctor会告诉您是否已正确执行操作。


在下面添加您需要的Homebrew水龙头,以安装酿造的php。如果这些存储库已被窃听,请跳过此步骤。如果不确定这些存储库是否已被窃听,请运行以下命令。最坏的情况下,您将无害Warning: Already tapped!


$ brew tap homebrew/dupes

$ brew tap homebrew/versions

$ brew tap homebrew/php

然后使用openssl安装curl:


$ brew install --with-openssl curl

然后使用刚安装并酿造的openssl的curl安装php:


$ brew install --with-homebrew-curl --with-httpd24 php55

如果使用apache,请确保将其添加LoadModule php5_module    /usr/local/opt/php55/libexec/apache2/libphp5.so到您的计算机/etc/apache2/httpd.conf并重新启动apache。


如果不使用apache 2.4,则可以--with-httpd24从上述命令中删除。


如果使用nginx,请遵循以下说明开始fpm:


要在启动时启动php-fpm:


mkdir -p ~/Library/LaunchAgents

cp /usr/local/opt/php55/homebrew.mxcl.php55.plist ~/Library/LaunchAgents/

launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.php55.plist

安装您将需要的任何php扩展,例如。mcrypt。


$ brew install php55-mcrypt

完成后,再次运行此命令:


$ php -i | grep "SSL Version"

而且您应该看到:


SSL Version => OpenSSL/1.0.2h

现在,重新测试您的应用程序,该应用程序将SSLRead() return error -9806消失。



查看完整回答
反对 回复 2019-12-13
?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

我也有类似的SSLRead() return error -9806错误问题,也有SSL Version => SecureTransport。


但就我而言,问题是我设置了curl CURLOPT_HTTP_VERSION选项:


$curl = curl_init();    

curl_setopt($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);

如果删除该选项,则cURL将决定默认使用哪个版本。有关更多信息,请参见curl_setopt文档。


这对我有用,并且我不需要使用cURL或PHP进行任何更改。但这是error -9806出现的许多情况之一的解决方案。



查看完整回答
反对 回复 2019-12-13
  • 3 回答
  • 0 关注
  • 343 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信