之前换了BT面板，前几天有个东西需要用到PHP 发起HTTP2请求代码如下：if (curl_version()["features"] & CURL_VERSION_HTTP2 !== 0) { $ch = curl_init(); curl_setopt_array($ch, [ CURLOPT_URL =>$siteurlhttp2, CURLOPT_HEADER =>true, CURLOPT_NOBODY =>true, CURLOPT_RETURNTRANSFER =>true, CURLOPT_IPRESOLVE =>CURL_IPRESOLVE_V4, CURLOPT_SSL_VERIFYPEER =>false, CURLOPT_HTTP_VERSION =>CURL_HTTP_VERSION_2_0, ]); $response = curl_exec($ch); if ($response !== false && strpos($response, "HTTP/2") === 0) { $http2=array("http2"=> "true"); } elseif ($response !== false) { $http2=array("http2"=> "false"); } else { echo curl_error($ch); } curl_close($ch); } else { $http2=array("http2"=> "client error"); } 从网上找的代码检测网址是否支持HTTP2访问的，我做了些优化调整，设置了CURLOPT_IPRESOLVE 参数为 CURL_IPRESOLVE_V4 来改进有IPv6 的系统打开网址的速度还有CURLOPT_NOBODY 就不要多说了。这段代码 BT面板安装的环境下PHP运行时会报错，经过搜索发现是PHP curl不支持 HTTP2于是网上搜索如果更新Curl 找了半天全是 yum 安装一个第三方的包去更新我还收到了我去年发的文章?具体方法不提了结果就是国内VPS下载这个第三方打包好的RPM包巨卡基本凉凉，我还是手动下载rpm包放到 yum的缓存目录下才完成安装。安装后结果：shell 内 使用Curl -V 显示的是最新版但是php内并不会生效。于是手动编译安装wegt https://curl.haxx.se/download/curl-7.73.0.tar.gz && tar jxvf curl-7.73.0.tar.gz && cd curl-7.73.0 下载解压进入解压目录然后./configure --prefix=/usr/local --with-nghttp2=/usr/local --with-ssl make && make install 你以为这样就结束了？ 要这么顺利简单我就不写这个文章了 淦 下面问题来了curl -V 命令查看版本都是OK的也支持HTTP php 内curl 版本就是不变还是老的版本(这块截图已丢失) 宝塔论坛别提了里面的东西没卵用，不逼逼叨了感觉形容当时的场景好费事.最终解决方法的：./configure --prefix=/usr/local/curl --with-nghttp2=/usr/local --with-ssl make && make install nghttp2 模块编译简单就不赘述了网上教程辣鸡全尼玛都是 --prefix=/usr/local路径不对导致php识别的还是老版本的curl完事截图：不要在意截图curl版本那会安装的时候还是curl-7.72.0
今天安装aliyun-log-c-sdk-lite make的时候报错问了下群里的大哥是缺少curl但是我curl和libcurl全都装过了的，然后去github看了下aliyun-log-c-sdk-lite的官方文档发现文档说libcurl建议 7.49.0 及以上版本然后我看了下机子上的版本才7.29于是上网搜索了一下怎么更新curl及libcurl方法如下：1.安装libcurl的yum源rpm -ivh http://mirror.city-fan.org/ftp/contrib/yum-repo/city-fan.org-release-2-1.rhel7.noarch.rpm 2.执行yum upgrade更新yum upgrade libcurl curl 然后这里你会发现什么都没有发生要把编辑city-fa源把enabled=0改为enabled=1vi /etc/yum.repos.d/city-fan.org.repo 在执行Error: Package: libcurl-7.65.1-1.0.cf.rhel7.x86_64 (city-fan.org) Requires: libnghttp2.so.14()(64bit) 解决方法：1.安装epel源yum install epel-release -y 2.重新执行上面的安装命令然后依然报错Requires: libnghttp2.so.14()(64bit)最终解决方法执行：yum --enablerepo=epel install libnghttp2 -y && yum install libcurl -y 总结aliyun-log-c-sdk-lite 官方文档说是libcurl建议 7.49.0 及以上版本其实是必须要libcurl>=7.49 不然编译会报错网上大部分都是Centos6的教程还有对着改一下才行懒人一键脚本：https://github.com/Seevil/uplibcurlgit clone https://github.com/Seevil/uplibcurl.git cd uplibcurl && chmod u+x uplibcurl.sh && ./uplibcurl.sh