Ubuntu18.04 下 lnmp 包使用过程中 curl https 请求出现 502

问题原因

查看phpinfo 发现curl扩展的SSL Version版本为:Openssl1.1.0, 在ubuntu 中,ubuntu 18.04+版本采用的是最新的openssl 1.1,之前的ubuntu基本都是1.0的版本,openssl1.1安装低于php7的版本
会报错.

解决

1.失败的解决过程

最先我想是为curl指定ssl的版本,然后再将此curl编译到php的版本中,可是遇到一下问题.

  • 编译curl 指定ssl版本的时候报错,各种错误,最后摸索到下面这条命令,编译成功
    LIBS="-ldl" PKG_CONFIG_PATH=/usr/local/openssl/lib/pkgconfig ./configure --with-ssl --with-libssl-prefix=/usr/local/openssl --disable-shared --prefix=/usr/local/curl
  • 当我尝试将编译安装好的curl,编译进php5.6的时候,还是报错这条路是不好走.
2.成功的解决过程

我重新安装系统,在执行lnmp多版本安装的时候提示我
Please reinstall the libcurl distribution 缺少这个库
执行命令

sudo apt-get install libcurl4-gnutls-dev

然后进行lnmp包的多版本安装,此时php5版本的curl https访问竟然成功了,我去查看phpinfo,发现SSL Version版本为:GnuTLS/3.5.18
回想一下,应该是libcurl这库的版本决定了SSL Versionl的版本

file_get_contents无法获取到https开头的链接内容问题

解决:

$options = array(
            'http' => array(
                'method' => 'POST',
                'header' => 'Content-type:application/x-www-form-urlencoded;charset=UTF-8',
                'content' => $stringData
            ),
            // 解决SSL证书验证失败的问题
            "ssl"=>array(
                "verify_peer"=>false,
                "verify_peer_name"=>false,
            )
        );
$context = stream_context_create($options);
$data = file_get_contents($url, false, $context);
本作品采用《CC 协议》,转载必须注明作者和本文链接
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!