当前位置: 首页 > 面试题库 >

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

乐正镜
2023-03-14
问题内容

我最近才升级到OSX 10.10 Yosemite,由于升级,我无法再将Curl POST转换为SSL url。

我首先使用了wordpress的wp_remote_request调用,还尝试在php中使用curl。两者(按预期)给出相同的错误消息:

错误号:56

错误字符串:SSLRead()返回错误-9806

注意:当我将POST卷曲到HTTP时,它可以正常工作。我认为这是PHP.ini或apache中的设置(升级后丢失了原始的HTTPD.conf文件…)。

谁能帮我吗?


问题答案:

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

$ php -i | grep "SSL Version"

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

SSL Version => SecureTransport

您可以通过安装php版本来解决此问题,该版本使用cURL版本使用OpenSSL而不是SecureTransport。使用自制程序最容易做到这一点。因此,如果尚未安装,请先安装。如果已安装自制软件,但brewupdate自升级到优胜美地以来您还没有运行过,请首先执行此操作。还要确保您已安装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消失。



 类似资料:
  • 我正在使用springboot和gradle,我正在尝试在控制器中执行下面的代码。 在编译时,我得到以下错误 错误:找不到symbol=List.of(“水星”,“金星”,“地球”,“火星”,^symbol:方法of(String,String,String,String,String,String,String,String,String,String) 位置:接口列表 我的分级档案 sourc

  • 问题内容: 我想从字符串中删除最后一次出现的“ \”这个特殊字符。我尝试了像这样的字符串函数 但是每次遇到错误时,我都要求加一个额外的报价。同时我发现(“ \”“)用来传递”这个特殊字符。我该如何进行? 问题答案: 您需要使用 字符串中的字符转义特殊字符(依此类推)。因此,在它们之前使用a 会使它成为 文字 ,这意味着java会将其后的内容视为常规字符。 你可以测试看看 将打印。它会打印。 所以:

  • 问题内容: 我在我的应用程序的servlet中使用以下代码 当我运行应用程序并调用servlet时,出现以下错误 我已经在Java版本为JDK 1.6.20的Linux机器上托管了该应用程序。 是什么原因引起的问题… 是编写代码的类,是在上述类中调用方法的servlet … 问题答案: 要在服务器端应用程序中使用AWT类,我相信您需要在“无头”模式下运行。将servlet容器的启动更改为包括: (

  • 来自servlet com.google.gson的未捕获异常。JsonSyntaxException:java.lang.IllegalStateException:应为BEGIN_OBJECT,但在com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(Reflective TypeAdapter Fact

  • 我已经重新安装了node-sass,但这不起作用。